Skip to main content

StreamDeserializer

Struct StreamDeserializer 

Source
pub struct StreamDeserializer { /* private fields */ }
Expand description

Reads a stream of MessagePack items into items (see deser::stream).

The items of the stream follow each other without separators. An item is complete once its last byte was read. Reading continues after items that fail to deserialize, items that are not well-formed end the stream.

Items which do not borrow are deserialized while their input arrives (see StreamDeserializer::feed) so only incomplete atoms (like strings) are buffered.

use deser_msgpack::DeserializerConfig;

let mut reader =
    DeserializerConfig::new().reader(&[0x01, 0xa2, b'h', b'i'][..]);
assert_eq!(reader.read::<u32>().unwrap(), Some(1));
assert_eq!(reader.read::<String>().unwrap().as_deref(), Some("hi"));
assert_eq!(reader.read::<u32>().unwrap(), None);

Items are parsed like with a Deserializer, so they can borrow from the stream’s buffer (see InputBuffer::deserialize).

Implementations§

Source§

impl StreamDeserializer

Source

pub fn new() -> StreamDeserializer

Creates a stream deserializer.

Source

pub fn with_config(config: &DeserializerConfig) -> StreamDeserializer

Creates a stream deserializer with the given configuration.

Source

pub fn config(&self) -> &DeserializerConfig

Returns the configuration.

Trait Implementations§

Source§

impl Debug for StreamDeserializer

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for StreamDeserializer

Source§

fn default() -> StreamDeserializer

Returns the “default value” for a type. Read more
Source§

impl StreamDeserializer for StreamDeserializer

Source§

fn frame(&mut self, input: &[u8], eof: bool) -> Result<Frame, Error>

Finds the next value in the input. Read more
Source§

fn drive_frame<'de>( &mut self, frame: &'de [u8], driver: &mut DeserializeDriver<'_, 'de>, ) -> Result<(), Error>

Deserializes a value from its frame. Read more
Source§

fn supports_feed(&self) -> bool

Returns true if the deserializer implements feed. Read more
Source§

fn feed( &mut self, input: &[u8], offset: usize, eof: bool, driver: &mut DeserializeDriver<'_, '_>, ) -> Result<Progress, Error>

Deserializes a value while its input arrives. Read more
Source§

fn peek(&mut self, input: &[u8], eof: bool) -> Result<Option<Progress>, Error>

Finds the start of the next value without deserializing it. Read more
Source§

fn is_text(&self) -> bool

Returns true if the format is text. Read more

Auto Trait Implementations§

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.