Skip to main content

JsonDecoder

Struct JsonDecoder 

Source
pub struct JsonDecoder<'budget, R = JsonResource, Q = usize>{ /* private fields */ }
Expand description

Strictly decodes complete JSON documents while retaining cumulative usage.

This facade performs no normalization. It accepts integers from i64::MIN through u64::MAX, requires finite floating-point values, supports values borrowing from its input, and exposes caller-provided Serde seeds.

§Examples

use qubit_json::decode::JsonDecoder;
use serde_json::Value;

let mut decoder = JsonDecoder::unlimited();
let value = decoder.decode_str::<Value>(r#"{"ok":true}"#)?;
assert_eq!(value["ok"], true);

Implementations§

Source§

impl<R, Q> JsonDecoder<'static, R, Q>
where R: Clone, Q: ResourceQuantity,

Source

pub fn with_limits(limits: JsonDecodeLimits<R, Q>) -> Self

Creates a decoder with a cumulative session built from explicit limits.

§Parameters
  • limits - Input and decoded-value limits used by the cumulative session.
§Returns

A decoder whose accounting starts empty and is constrained by limits.

Source§

impl JsonDecoder<'static, JsonResource, usize>

Source

pub fn unlimited() -> Self

Creates a decoder with no configured input or value limits.

§Returns

A decoder using the standard resource identities with all limits disabled.

Source§

impl<'budget, R, Q> JsonDecoder<'budget, R, Q>
where R: Clone, Q: ResourceQuantity,

Source

pub const fn new(session: JsonDecodeSession<'budget, R, Q>) -> Self

Creates a strict decoder around a reusable cumulative session.

§Parameters
  • session - Cumulative session that receives input and decoded-value charges.
§Returns

A decoder that owns session until it is consumed by Self::into_session.

Source

pub const fn with_diagnostic_policy(self, policy: DiagnosticPolicy) -> Self

Configures whether input-derived error sources are retained.

The default is DiagnosticPolicy::Redacted. Selecting DiagnosticPolicy::Detailed may retain source errors containing fragments or structural details derived from the input.

§Parameters
  • policy - Diagnostic retention policy for failures produced by this decoder.
§Returns

The decoder with the requested policy; its existing session is retained.

Source

pub const fn diagnostic_policy(&self) -> DiagnosticPolicy

Returns the configured diagnostic policy without changing the decoder.

§Returns

The policy used when constructing input-derived decode errors.

Source

pub const fn session(&self) -> &JsonDecodeSession<'budget, R, Q>

Returns the cumulative session for read-only inspection.

The returned reference is borrowed from the decoder and exposes the charges accumulated by completed operations.

§Returns

A shared reference to the decoder’s cumulative session.

Source

pub const fn session_mut(&mut self) -> &mut JsonDecodeSession<'budget, R, Q>

Returns mutable access to the cumulative session.

Mutating the session changes the limits and accounting state used by subsequent operations.

§Returns

A mutable reference tied to the decoder’s lifetime.

Source

pub fn into_session(self) -> JsonDecodeSession<'budget, R, Q>

Consumes the decoder and returns its cumulative session.

This transfers ownership of all accumulated accounting state without performing another decode or resetting the session.

§Returns

The session previously owned by this decoder.

Source

pub fn decode_str<'de, T>( &mut self, input: &'de str, ) -> Result<T, JsonDecodeError<R, Q>>
where T: Deserialize<'de>,

Decodes one complete JSON string and permits results borrowing input.

§Type Parameters
  • T - Target type deserialized from the complete document.
§Parameters
  • input - UTF-8 JSON text. The returned value may borrow from it.
§Returns

The deserialized value on success.

§Errors

Returns a structured error when input accounting, UTF-8 validation, JSON parsing, or Serde deserialization fails.

Source

pub fn decode_utf8<'de, T>( &mut self, input: &'de [u8], ) -> Result<T, JsonDecodeError<R, Q>>
where T: Deserialize<'de>,

Decodes one complete UTF-8 JSON byte slice and permits borrowed results.

§Type Parameters
  • T - Target type deserialized from the complete document.
§Parameters
  • input - Complete UTF-8 JSON bytes. The returned value may borrow from this slice.
§Returns

The deserialized value on success.

§Errors

Returns a structured error when accounting, UTF-8 validation, JSON parsing, or Serde deserialization fails.

Source

pub fn decode_seed_str<'de, S>( &mut self, seed: S, input: &'de str, ) -> Result<S::Value, JsonDecodeError<R, Q>>
where S: DeserializeSeed<'de>,

Decodes a JSON string through a caller-provided Serde seed.

§Type Parameters
  • S - Seed controlling construction of the decoded value.
§Parameters
  • seed - Serde seed used to deserialize the document.
  • input - Complete JSON text, which the seed may borrow from.
§Returns

The value produced by seed.

§Errors

Returns a structured error when accounting, parsing, or seeded deserialization fails.

Source

pub fn decode_seed_utf8<'de, S>( &mut self, seed: S, input: &'de [u8], ) -> Result<S::Value, JsonDecodeError<R, Q>>
where S: DeserializeSeed<'de>,

Decodes a UTF-8 byte slice through a caller-provided Serde seed.

§Type Parameters
  • S - Seed controlling construction of the decoded value.
§Parameters
  • seed - Serde seed used to deserialize the document.
  • input - Complete UTF-8 JSON bytes, which the seed may borrow from.
§Returns

The value produced by seed.

§Errors

Returns a structured error when accounting, UTF-8 validation, parsing, or seeded deserialization fails.

Source

pub fn decode_object_str<'de, T>( &mut self, input: &'de str, ) -> Result<T, JsonDecodeError<R, Q>>
where T: Deserialize<'de>,

Decodes a complete JSON string while requiring a top-level object.

The top-level check is performed before the decoded value is committed, so an array, scalar, or otherwise valid non-object document is rejected.

§Type Parameters
  • T - Target type deserialized from the object document.
§Parameters
  • input - Complete JSON text, which the returned value may borrow.
§Returns

The deserialized object value on success.

§Errors

Returns a structured error for accounting, parsing, top-level-kind, or deserialization failures.

Source

pub fn decode_object_utf8<'de, T>( &mut self, input: &'de [u8], ) -> Result<T, JsonDecodeError<R, Q>>
where T: Deserialize<'de>,

Decodes a complete UTF-8 byte slice while requiring a top-level object.

A syntactically valid array or scalar is rejected by the top-level constraint before the decoded value is committed.

§Type Parameters
  • T - Target type deserialized from the object document.
§Parameters
  • input - Complete UTF-8 JSON bytes, which the returned value may borrow.
§Returns

The deserialized object value on success.

§Errors

Returns a structured error for accounting, UTF-8 validation, parsing, top-level-kind, or deserialization failures.

Source

pub fn decode_array_str<'de, T>( &mut self, input: &'de str, ) -> Result<Vec<T>, JsonDecodeError<R, Q>>
where T: Deserialize<'de>,

Decodes a complete JSON string while requiring a top-level array.

§Type Parameters
  • T - Element type deserialized from the array.
§Parameters
  • input - Complete JSON text, which the returned elements may borrow.
§Returns

The decoded array elements on success.

§Errors

Returns a structured error for accounting, parsing, top-level-kind, or deserialization failures.

Source

pub fn decode_array_utf8<'de, T>( &mut self, input: &'de [u8], ) -> Result<Vec<T>, JsonDecodeError<R, Q>>
where T: Deserialize<'de>,

Decodes a complete UTF-8 byte slice while requiring a top-level array.

§Type Parameters
  • T - Element type deserialized from the array.
§Parameters
  • input - Complete UTF-8 JSON bytes, which the returned elements may borrow.
§Returns

The decoded array elements on success.

§Errors

Returns a structured error for accounting, UTF-8 validation, parsing, top-level-kind, or deserialization failures.

Source

pub fn validate_str(&mut self, input: &str) -> Result<(), JsonDecodeError<R, Q>>

Validates and accounts for one complete JSON string without materializing a target value.

§Parameters
  • input - Complete JSON text to validate and account for.
§Returns

Ok(()) after the complete document is valid and accounted for.

§Errors

Returns a structured error when accounting or JSON parsing fails. No target value is allocated; str input is already valid UTF-8.

Source

pub fn validate_utf8( &mut self, input: &[u8], ) -> Result<(), JsonDecodeError<R, Q>>

Validates and accounts for one complete UTF-8 JSON byte slice without materializing a target value.

§Parameters
  • input - Complete UTF-8 JSON bytes to validate and account for.
§Returns

Ok(()) after the complete document is valid and accounted for.

§Errors

Returns a structured error when accounting, UTF-8 validation, or JSON parsing fails. No target value is allocated.

Trait Implementations§

Source§

impl<'budget, R: Debug, Q> Debug for JsonDecoder<'budget, R, Q>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'budget, R = JsonResource, Q = usize> !UnwindSafe for JsonDecoder<'budget, R, Q>

§

impl<'budget, R, Q> Freeze for JsonDecoder<'budget, R, Q>
where JsonDecodeEngine<'budget, R, Q>: Freeze,

§

impl<'budget, R, Q> RefUnwindSafe for JsonDecoder<'budget, R, Q>
where JsonDecodeEngine<'budget, R, Q>: RefUnwindSafe,

§

impl<'budget, R, Q> Send for JsonDecoder<'budget, R, Q>
where JsonDecodeEngine<'budget, R, Q>: Send,

§

impl<'budget, R, Q> Sync for JsonDecoder<'budget, R, Q>
where JsonDecodeEngine<'budget, R, Q>: Sync,

§

impl<'budget, R, Q> Unpin for JsonDecoder<'budget, R, Q>
where JsonDecodeEngine<'budget, R, Q>: Unpin,

§

impl<'budget, R, Q> UnsafeUnpin for JsonDecoder<'budget, R, Q>
where JsonDecodeEngine<'budget, R, Q>: UnsafeUnpin,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.