Append a field value from a pre-resolved range.
(buf: &mut String, doc: &[u8], range: Option<(usize, usize)>)
| 81 | |
| 82 | /// Append a field value from a pre-resolved range. |
| 83 | fn append_field_value_range(buf: &mut String, doc: &[u8], range: Option<(usize, usize)>) { |
| 84 | let Some((start, end)) = range else { |
| 85 | buf.push_str("null"); |
| 86 | return; |
| 87 | }; |
| 88 | |
| 89 | if read_null(doc, start) { |
| 90 | buf.push_str("null"); |
| 91 | } else if let Some(s) = read_str(doc, start) { |
| 92 | buf.push('"'); |
| 93 | buf.push_str(s); |
| 94 | buf.push('"'); |
| 95 | } else if let Some(n) = read_i64(doc, start) { |
| 96 | use std::fmt::Write; |
| 97 | let _ = write!(buf, "{n}"); |
| 98 | } else if let Some(n) = read_f64(doc, start) { |
| 99 | use std::fmt::Write; |
| 100 | let _ = write!(buf, "{n}"); |
| 101 | } else { |
| 102 | let bytes = &doc[start..end]; |
| 103 | for b in bytes { |
| 104 | use std::fmt::Write; |
| 105 | let _ = write!(buf, "{b:02x}"); |
| 106 | } |
| 107 | } |
| 108 | } |
| 109 | |
| 110 | #[cfg(test)] |
| 111 | mod tests { |