Struct nuts_bytes::Reader

source ·
pub struct Reader<T> { /* private fields */ }
Expand description

A cursor like utility that reads structured data from an arbitrary source.

The source must implement the TakeBytes trait which supports reading binary data from it.

Implementations§

source§

impl<'tb, T: TakeBytes<'tb>> Reader<T>

source

pub fn new(source: T) -> Reader<T>

Creates a new Reader instance.

The source of the reader is passed to the function. Every type that implements the TakeBytes trait can be the source of this reader.

source

pub fn deserialize<D: Deserialize<'tb>>(&mut self) -> Result<D>

Deserializes from this binary representation into a data structure which implements Serde Deserialize trait.

This is simply a wrapper for

D::deserialize(self)
source

pub fn read_i8(&mut self) -> Result<i8>

Reads an i8 value from the reader.

source

pub fn read_u8(&mut self) -> Result<u8>

Reads an u8 value from the reader.

source

pub fn read_i16(&mut self) -> Result<i16>

Reads an i16 value from the reader.

source

pub fn read_u16(&mut self) -> Result<u16>

Reads an u16 value from the reader.

source

pub fn read_i32(&mut self) -> Result<i32>

Reads an i32 value from the reader.

source

pub fn read_u32(&mut self) -> Result<u32>

Reads an u32 value from the reader.

source

pub fn read_i64(&mut self) -> Result<i64>

Reads an i64 value from the reader.

source

pub fn read_u64(&mut self) -> Result<u64>

Reads an u64 value from the reader.

source

pub fn read_i128(&mut self) -> Result<i128>

Reads an i128 value from the reader.

source

pub fn read_u128(&mut self) -> Result<u128>

Reads an u128 value from the reader.

source

pub fn read_bytes(&mut self, n: usize) -> Result<Cow<'tb, [u8]>>

Reads n bytes from the reader.

If possible a slice of borrowed data of the given size (n) wrapped into Cow::Borrowed is returned.

If the data cannot be borrowed a Vec<u8> wrapped into a Cow::Owned is returned.

Errors

If not enough data are available an Error::Eof error is returned.

source

pub fn read_bytes_to(&mut self, buf: &mut [u8]) -> Result<()>

Reads some bytes from the reader and puts them into the given buffer buf.

Errors

If not enough data are available to fill buf an Error::Eof error is returned.

Trait Implementations§

source§

impl<'tb, T: TakeBytes<'tb>> AsRef<T> for Reader<T>

source§

fn as_ref(&self) -> &T

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<'a, 'de, 'tb: 'de, T: TakeBytes<'tb>> Deserializer<'de> for &'a mut Reader<T>

§

type Error = Error

The error type that can be returned if some error occurs during deserialization.
source§

fn deserialize_any<V: Visitor<'de>>(self, _visitor: V) -> Result<V::Value>

Require the Deserializer to figure out how to drive the visitor based on what data type is in the input. Read more
source§

fn deserialize_bool<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting a bool value.
source§

fn deserialize_i8<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting an i8 value.
source§

fn deserialize_i16<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting an i16 value.
source§

fn deserialize_i32<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting an i32 value.
source§

fn deserialize_i64<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting an i64 value.
source§

fn deserialize_u8<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting a u8 value.
source§

fn deserialize_u16<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting a u16 value.
source§

fn deserialize_u32<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting a u32 value.
source§

fn deserialize_u64<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting a u64 value.
source§

fn deserialize_f32<V: Visitor<'de>>(self, _visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting a f32 value.
source§

fn deserialize_f64<V: Visitor<'de>>(self, _visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting a f64 value.
source§

fn deserialize_char<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting a char value.
source§

fn deserialize_str<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting a string value and does not benefit from taking ownership of buffered data owned by the Deserializer. Read more
source§

fn deserialize_string<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting a string value and would benefit from taking ownership of buffered data owned by the Deserializer. Read more
source§

fn deserialize_bytes<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting a byte array and does not benefit from taking ownership of buffered data owned by the Deserializer. Read more
source§

fn deserialize_byte_buf<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting a byte array and would benefit from taking ownership of buffered data owned by the Deserializer. Read more
source§

fn deserialize_option<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting an optional value. Read more
source§

fn deserialize_unit<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting a unit value.
source§

fn deserialize_unit_struct<V: Visitor<'de>>( self, _name: &'static str, visitor: V ) -> Result<V::Value>

Hint that the Deserialize type is expecting a unit struct with a particular name.
source§

fn deserialize_newtype_struct<V: Visitor<'de>>( self, _name: &'static str, visitor: V ) -> Result<V::Value>

Hint that the Deserialize type is expecting a newtype struct with a particular name.
source§

fn deserialize_seq<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting a sequence of values.
source§

fn deserialize_tuple<V: Visitor<'de>>( self, len: usize, visitor: V ) -> Result<V::Value>

Hint that the Deserialize type is expecting a sequence of values and knows how many values there are without looking at the serialized data.
source§

fn deserialize_tuple_struct<V: Visitor<'de>>( self, _name: &'static str, len: usize, visitor: V ) -> Result<V::Value>

Hint that the Deserialize type is expecting a tuple struct with a particular name and number of fields.
source§

fn deserialize_map<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting a map of key-value pairs.
source§

fn deserialize_struct<V: Visitor<'de>>( self, _name: &'static str, fields: &'static [&'static str], visitor: V ) -> Result<V::Value>

Hint that the Deserialize type is expecting a struct with a particular name and fields.
source§

fn deserialize_enum<V: Visitor<'de>>( self, _name: &'static str, _variants: &'static [&'static str], visitor: V ) -> Result<V::Value>

Hint that the Deserialize type is expecting an enum value with a particular name and possible variants.
source§

fn deserialize_identifier<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>

Hint that the Deserialize type is expecting the name of a struct field or the discriminant of an enum variant.
source§

fn deserialize_ignored_any<V: Visitor<'de>>( self, _visitor: V ) -> Result<V::Value>

Hint that the Deserialize type needs to deserialize a value whose type doesn’t matter because it is ignored. Read more
source§

fn deserialize_i128<V>( self, visitor: V ) -> Result<<V as Visitor<'de>>::Value, Self::Error>where V: Visitor<'de>,

Hint that the Deserialize type is expecting an i128 value. Read more
source§

fn deserialize_u128<V>( self, visitor: V ) -> Result<<V as Visitor<'de>>::Value, Self::Error>where V: Visitor<'de>,

Hint that the Deserialize type is expecting an u128 value. Read more
source§

fn is_human_readable(&self) -> bool

Determine whether Deserialize implementations should expect to deserialize their human-readable form. Read more

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for Reader<T>where T: RefUnwindSafe,

§

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

§

impl<T> Sync for Reader<T>where T: Sync,

§

impl<T> Unpin for Reader<T>where T: Unpin,

§

impl<T> UnwindSafe for Reader<T>where T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.