FieldIterator

Struct FieldIterator 

Source
pub struct FieldIterator<'bytes, 'parent, B: BytesLike<'bytes>, S: Stack> { /* private fields */ }
Expand description

An iterator over fields.

Implementations§

Source§

impl<'bytes, 'parent, B: BytesLike<'bytes>, S: Stack> FieldIterator<'bytes, 'parent, B, S>

Source

pub fn next( &mut self, ) -> Option<Result<(impl use<'bytes, B, S> + Iterator<Item = Result<char, JsonError<'bytes, B, S>>>, Value<'bytes, '_, B, S>), JsonError<'bytes, B, S>>>

The next entry (key, value) within the object.

The key is presented as an iterator over the characters within the serialized string, with the escape sequences handled. If the key specifies invalid UTF characters, the iterator will yield an error when it attempts to parse them. While it may not be possible to parse a key as UTF characters, decoding of this field’s value (and the rest of the structure) is still possible (even after the iterator yields its error). For more information, please refer to Value::to_str.

This is approximate to Iterator::next yet each item maintains a mutable reference to the iterator. Accordingly, we cannot use Iterator::next which requires items not borrow from the iterator.

polonius-the-crab details a frequent limitation of Rust’s borrow checker which users of this function may incur. It also details potential solutions (primarily using inlined code instead of functions, callbacks) before presenting itself as a complete solution. Please refer to it if you have difficulties calling this method for context.

Trait Implementations§

Source§

impl<'bytes, 'parent, B: BytesLike<'bytes>, S: Stack> Drop for FieldIterator<'bytes, 'parent, B, S>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<'bytes, 'parent, B, S> Freeze for FieldIterator<'bytes, 'parent, B, S>

§

impl<'bytes, 'parent, B, S> RefUnwindSafe for FieldIterator<'bytes, 'parent, B, S>

§

impl<'bytes, 'parent, B, S> Send for FieldIterator<'bytes, 'parent, B, S>
where B: Send, S: Send, <B as BytesLike<'bytes>>::Error: Send, <S as Stack>::Error: Send,

§

impl<'bytes, 'parent, B, S> Sync for FieldIterator<'bytes, 'parent, B, S>
where B: Sync, S: Sync, <B as BytesLike<'bytes>>::Error: Sync, <S as Stack>::Error: Sync,

§

impl<'bytes, 'parent, B, S> Unpin for FieldIterator<'bytes, 'parent, B, S>

§

impl<'bytes, 'parent, B, S> !UnwindSafe for FieldIterator<'bytes, 'parent, B, S>

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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.