Skip to main content

Jiter

Struct Jiter 

Source
pub struct Jiter<'j> { /* private fields */ }
Expand description

A JSON iterator.

Implementations§

Source§

impl<'j> Jiter<'j>

Source

pub fn new(data: &'j [u8]) -> Self

Constructs a new Jiter.

§Arguments
  • data: The JSON data to be parsed.
  • allow_inf_nan: Whether to allow NaN, Infinity and -Infinity as numbers.
Source

pub fn with_allow_inf_nan(self) -> Self

Source

pub fn with_allow_partial_strings(self) -> Self

Source

pub fn current_position(&self) -> LinePosition

Get the current LinePosition of the parser.

Source

pub fn current_index(&self) -> usize

Get the current index of the parser.

Source

pub fn slice_to_current(&self, start: usize) -> &'j [u8] ⓘ

Get a slice of the underlying JSON data from start to current_index.

Source

pub fn error_position(&self, index: usize) -> LinePosition

Convert an error index to a LinePosition.

§Arguments
  • index: The index of the error to find the position of.
Source

pub fn peek(&mut self) -> JiterResult<Peek>

Peek at the next JSON value without consuming it.

Source

pub fn next_null(&mut self) -> JiterResult<()>

Assuming the next value is null, consume it. Error if it is not null, or is invalid JSON.

Source

pub fn known_null(&mut self) -> JiterResult<()>

Knowing the next value is null, consume it.

Source

pub fn next_bool(&mut self) -> JiterResult<bool>

Assuming the next value is true or false, consume it. Error if it is not a boolean, or is invalid JSON.

§Returns

The boolean value.

Source

pub fn known_bool(&mut self, peek: Peek) -> JiterResult<bool>

Knowing the next value is true or false, parse it.

Source

pub fn next_number(&mut self) -> JiterResult<NumberAny>

Assuming the next value is a number, consume it. Error if it is not a number, or is invalid JSON.

§Returns

A NumberAny representing the number.

Source

pub fn known_number(&mut self, peek: Peek) -> JiterResult<NumberAny>

Knowing the next value is a number, parse it.

Source

pub fn next_int(&mut self) -> JiterResult<NumberInt>

Assuming the next value is an integer, consume it. Error if it is not an integer, or is invalid JSON.

Source

pub fn known_int(&mut self, peek: Peek) -> JiterResult<NumberInt>

Knowing the next value is an integer, parse it.

Source

pub fn next_float(&mut self) -> JiterResult<f64>

Assuming the next value is a float, consume it. Error if it is not a float, or is invalid JSON.

Source

pub fn known_float(&mut self, peek: Peek) -> JiterResult<f64>

Knowing the next value is a float, parse it.

Source

pub fn next_number_bytes(&mut self) -> JiterResult<&[u8]>

Assuming the next value is a number, consume it and return bytes from the original JSON data.

Source

pub fn known_number_bytes(&mut self, peek: Peek) -> JiterResult<&[u8]>

Knowing the next value is a number, parse it and return bytes from the original JSON data.

Source

pub fn next_str(&mut self) -> JiterResult<&str>

Assuming the next value is a string, consume it. Error if it is not a string, or is invalid JSON.

Source

pub fn known_str(&mut self) -> JiterResult<&str>

Knowing the next value is a string, parse it.

Source

pub fn next_bytes(&mut self) -> JiterResult<&[u8]>

Assuming the next value is a string, consume it and return bytes from the original JSON data.

Source

pub fn known_bytes(&mut self) -> JiterResult<&[u8]>

Knowing the next value is a string, parse it and return bytes from the original JSON data.

Source

pub fn next_value(&mut self) -> JiterResult<JsonValue<'j>>

Parse the next JSON value and return it as a JsonValue. Error if it is invalid JSON.

Source

pub fn known_value(&mut self, peek: Peek) -> JiterResult<JsonValue<'j>>

Parse the next JSON value and return it as a JsonValue. Error if it is invalid JSON.

§Arguments
  • peek: The Peek of the next JSON value.
Source

pub fn next_skip(&mut self) -> JiterResult<()>

Parse the next JSON value, but don’t return it. This should be faster than returning the value, useful when you don’t care about this value. Error if it is invalid JSON.

WARNING: For performance reasons, this method does not check that strings would be valid UTF-8.

Source

pub fn known_skip(&mut self, peek: Peek) -> JiterResult<()>

Parse the next JSON value, but don’t return it. Error if it is invalid JSON.

§Arguments
  • peek: The Peek of the next JSON value.
Source

pub fn next_value_owned(&mut self) -> JiterResult<JsonValue<'static>>

Parse the next JSON value and return it as a JsonValue with static lifetime. Error if it is invalid JSON.

Source

pub fn known_value_owned( &mut self, peek: Peek, ) -> JiterResult<JsonValue<'static>>

Parse the next JSON value and return it as a JsonValue with static lifetime. Error if it is invalid JSON.

§Arguments
  • peek: The Peek of the next JSON value.
Source

pub fn next_array(&mut self) -> JiterResult<Option<Peek>>

Assuming the next value is an array, peek at the first value. Error if it is not an array, or is invalid JSON.

§Returns

The Some(peek) of the first value in the array is not empty, None if it is empty.

Source

pub fn known_array(&mut self) -> JiterResult<Option<Peek>>

Assuming the next value is an array, peat at the first value.

Source

pub fn array_step(&mut self) -> JiterResult<Option<Peek>>

Peek at the next value in an array.

Source

pub fn next_object(&mut self) -> JiterResult<Option<&str>>

Assuming the next value is an object, consume the first key. Error if it is not an object, or is invalid JSON.

§Returns

The Some(key) of the first key in the object is not empty, None if it is empty.

Source

pub fn known_object(&mut self) -> JiterResult<Option<&str>>

Assuming the next value is an object, conssume the first key and return bytes from the original JSON data.

Source

pub fn next_object_bytes(&mut self) -> JiterResult<Option<&[u8]>>

Assuming the next value is an object, peek at the first key.

Source

pub fn next_key(&mut self) -> JiterResult<Option<&str>>

Get the next key in an object, or None if there are no more keys.

Source

pub fn next_key_bytes(&mut self) -> JiterResult<Option<&[u8]>>

Get the next key in an object as bytes, or None if there are no more keys.

Source

pub fn finish(&mut self) -> JiterResult<()>

Finish parsing the JSON data. Error if there is more data to be parsed.

Trait Implementations§

Source§

impl Clone for Jiter<'_>

Source§

fn clone(&self) -> Self

Clone a Jiter. Like the default implementation, but a new empty tape is used.

1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'j> Debug for Jiter<'j>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'j> Freeze for Jiter<'j>

§

impl<'j> RefUnwindSafe for Jiter<'j>

§

impl<'j> Send for Jiter<'j>

§

impl<'j> Sync for Jiter<'j>

§

impl<'j> Unpin for Jiter<'j>

§

impl<'j> UnsafeUnpin for Jiter<'j>

§

impl<'j> UnwindSafe for Jiter<'j>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. 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> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
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.
Source§

impl<T> Ungil for T
where T: Send,