Skip to main content

StreamDeserializer

Struct StreamDeserializer 

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

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

The stream is a CBOR sequence of data items that follow each other. 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::drive_partial) so only incomplete data items (like strings) are buffered.

use deser_cbor::DeserializerConfig;

let mut reader =
    DeserializerConfig::new().reader(&[0x01, 0x62, 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 context(&self) -> Context

Returns the context the values are deserialized in. Read more
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_partial(&self) -> bool

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

fn drive_partial( &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.