pub struct NormalizedJsonDocument<'input> { /* private fields */ }Expand description
A normalized JSON document whose text outlives borrowed decode results.
Preparing a document charges raw and normalized input budgets. Decoding it later charges only decoded-value budgets, and the same document may be decoded repeatedly. Documents are detached from the decoder that prepared them; value charges belong to the decoder performing each decode.
Borrowing follows Serde’s JSON representation rules: strings without JSON escapes can borrow from this document, while strings containing escapes require an owned target because deserialization must materialize their unescaped contents.
§Examples
use qubit_budget::json::JsonDecodeLimits;
use qubit_json::decode::NormalizingJsonDecodePolicy;
use qubit_json::decode::NormalizingJsonDecoder;
use serde_json::Value;
let input = " {\"ok\":true} ";
let mut decoder = NormalizingJsonDecoder::with_limits(
NormalizingJsonDecodePolicy::builder().build(),
JsonDecodeLimits::new(),
);
let document = decoder.prepare_str(input)?;
assert_eq!(document.as_str(), r#"{"ok":true}"#);
assert_eq!(document.raw_input_bytes(), input.len());
assert_eq!(document.normalized_input_bytes(), document.as_str().len());
let value = decoder.decode_precharged_document::<Value>(&document)?;
assert_eq!(value["ok"], true);Implementations§
Source§impl<'input> NormalizedJsonDocument<'input>
impl<'input> NormalizedJsonDocument<'input>
Sourcepub fn as_str(&self) -> &str
pub fn as_str(&self) -> &str
Returns the normalized JSON text retained by this document.
The returned slice borrows the document. It is the exact text consumed by later document-based decoding and does not allocate.
§Returns
The normalized JSON text.
Sourcepub const fn raw_input_bytes(&self) -> usize
pub const fn raw_input_bytes(&self) -> usize
Returns the original input length in bytes.
This value includes whitespace, a UTF-8 byte-order mark, and any other input bytes removed or rewritten during normalization.
§Returns
The byte length charged for the original input.
Sourcepub const fn normalized_input_bytes(&self) -> usize
pub const fn normalized_input_bytes(&self) -> usize
Returns the normalized text length in bytes.
This is the byte length of Self::as_str, after all enabled
normalization has completed.
§Returns
The byte length charged for normalized text.
Trait Implementations§
Source§impl<'input> Clone for NormalizedJsonDocument<'input>
impl<'input> Clone for NormalizedJsonDocument<'input>
Source§fn clone(&self) -> NormalizedJsonDocument<'input>
fn clone(&self) -> NormalizedJsonDocument<'input>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more