Struct StreamDeserializer
pub struct StreamDeserializer<'de, R, T> { /* private fields */ }
Iterator that deserializes a stream into multiple JSON values.
A stream deserializer can be created from any JSON deserializer using the
Deserializer::into_iter method.
The data can consist of any JSON value. Values need to be a self-delineating value e.g. arrays, objects, or strings, or be followed by whitespace or a self-delineating value.
use ;
Implementations
impl<'de, R, T> StreamDeserializer<'de, R, T>
where
R: Read<'de>,
T: Deserialize<'de>,
fn new(read: R) -> SelfCreate a JSON stream deserializer from one of the possible serde_json input sources.
Typically it is more convenient to use one of these methods instead:
- Deserializer::from_str(...).into_iter()
- Deserializer::from_slice(...).into_iter()
- Deserializer::from_reader(...).into_iter()
fn byte_offset(&self) -> usizeReturns the number of bytes so far deserialized into a successful
T.If a stream deserializer returns an EOF error, new data can be joined to
old_data[stream.byte_offset()..]to try again.let data = b"[0] [1] ["; let de = from_slice; let mut stream = de.; assert_eq!; println!; // [0] assert_eq!; println!; // [1] assert_eq!; println!; // error assert_eq!; // If err.is_eof(), can join the remaining data to new data and continue. let remaining = &data;Note: In the future this method may be changed to return the number of bytes so far deserialized into a successful T or syntactically valid JSON skipped over due to a type error. See serde-rs/json#70 for an example illustrating this.
Trait Implementations
impl<'de, R, T> FusedIterator for StreamDeserializer<'de, R, T>
where
R: Read<'de> + Fused,
T: Deserialize<'de>,
impl<'de, R, T> Iterator for StreamDeserializer<'de, R, T>
where
R: Read<'de>,
T: Deserialize<'de>,
type Item = Result<T, Error>;fn next(&mut self) -> Option<Result<T>>
Auto Trait Implementations
impl<'de, R, T> Freeze for StreamDeserializer<'de, R, T>
where
Deserializer<R>: Freeze,
PhantomData<T>: Freeze,
impl<'de, R, T> RefUnwindSafe for StreamDeserializer<'de, R, T>
where
Deserializer<R>: RefUnwindSafe,
PhantomData<T>: RefUnwindSafe,
impl<'de, R, T> Send for StreamDeserializer<'de, R, T>
where
Deserializer<R>: Send,
PhantomData<T>: Send,
impl<'de, R, T> Sync for StreamDeserializer<'de, R, T>
where
Deserializer<R>: Sync,
PhantomData<T>: Sync,
impl<'de, R, T> Unpin for StreamDeserializer<'de, R, T>
where
Deserializer<R>: Unpin,
PhantomData<T>: Unpin,
impl<'de, R, T> UnsafeUnpin for StreamDeserializer<'de, R, T>
where
Deserializer<R>: UnsafeUnpin,
PhantomData<T>: UnsafeUnpin,
impl<'de, R, T> UnwindSafe for StreamDeserializer<'de, R, T>
where
Deserializer<R>: UnwindSafe,
PhantomData<T>: UnwindSafe,
Blanket Implementations
impl<I> IntoIterator for StreamDeserializer<'de, R, T>
where
I: Iterator,
type Item = <I as Iterator>::Item;type IntoIter = I;fn into_iter(self) -> I
impl<T> Any for StreamDeserializer<'de, R, T>
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for StreamDeserializer<'de, R, T>
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for StreamDeserializer<'de, R, T>
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> From<T> for StreamDeserializer<'de, R, T>
fn from(t: T) -> TReturns the argument unchanged.
impl<T, U> Into<U> for StreamDeserializer<'de, R, T>
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for StreamDeserializer<'de, R, T>
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for StreamDeserializer<'de, R, T>
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>