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>
impl<'tb, T: TakeBytes<'tb>> Reader<T>
sourcepub fn new(source: T) -> Reader<T>
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.
sourcepub fn deserialize<D: Deserialize<'tb>>(&mut self) -> Result<D>
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)
sourcepub fn read_bytes(&mut self, n: usize) -> Result<Cow<'tb, [u8]>>
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.
sourcepub fn read_bytes_to(&mut self, buf: &mut [u8]) -> Result<()>
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<'a, 'de, 'tb: 'de, T: TakeBytes<'tb>> Deserializer<'de> for &'a mut Reader<T>
impl<'a, 'de, 'tb: 'de, T: TakeBytes<'tb>> Deserializer<'de> for &'a mut Reader<T>
source§fn deserialize_any<V: Visitor<'de>>(self, _visitor: V) -> Result<V::Value>
fn deserialize_any<V: Visitor<'de>>(self, _visitor: V) -> Result<V::Value>
Deserializer
to figure out how to drive the visitor based
on what data type is in the input. Read moresource§fn deserialize_bool<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_bool<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting a bool
value.source§fn deserialize_i8<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_i8<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting an i8
value.source§fn deserialize_i16<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_i16<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting an i16
value.source§fn deserialize_i32<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_i32<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting an i32
value.source§fn deserialize_i64<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_i64<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting an i64
value.source§fn deserialize_u8<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_u8<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting a u8
value.source§fn deserialize_u16<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_u16<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting a u16
value.source§fn deserialize_u32<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_u32<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting a u32
value.source§fn deserialize_u64<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_u64<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting a u64
value.source§fn deserialize_f32<V: Visitor<'de>>(self, _visitor: V) -> Result<V::Value>
fn deserialize_f32<V: Visitor<'de>>(self, _visitor: V) -> Result<V::Value>
Deserialize
type is expecting a f32
value.source§fn deserialize_f64<V: Visitor<'de>>(self, _visitor: V) -> Result<V::Value>
fn deserialize_f64<V: Visitor<'de>>(self, _visitor: V) -> Result<V::Value>
Deserialize
type is expecting a f64
value.source§fn deserialize_char<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_char<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting a char
value.source§fn deserialize_str<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_str<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting a string value and does
not benefit from taking ownership of buffered data owned by the
Deserializer
. Read moresource§fn deserialize_string<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_string<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting a string value and would
benefit from taking ownership of buffered data owned by the
Deserializer
. Read moresource§fn deserialize_bytes<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_bytes<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting a byte array and does not
benefit from taking ownership of buffered data owned by the
Deserializer
. Read moresource§fn deserialize_byte_buf<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_byte_buf<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting a byte array and would
benefit from taking ownership of buffered data owned by the
Deserializer
. Read moresource§fn deserialize_option<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_option<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting an optional value. Read moresource§fn deserialize_unit<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_unit<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting a unit value.source§fn deserialize_unit_struct<V: Visitor<'de>>(
self,
_name: &'static str,
visitor: V
) -> Result<V::Value>
fn deserialize_unit_struct<V: Visitor<'de>>( self, _name: &'static str, visitor: V ) -> Result<V::Value>
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>
fn deserialize_newtype_struct<V: Visitor<'de>>( self, _name: &'static str, visitor: V ) -> Result<V::Value>
Deserialize
type is expecting a newtype struct with a
particular name.source§fn deserialize_seq<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
fn deserialize_seq<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
Deserialize
type is expecting a sequence of values.source§fn deserialize_tuple<V: Visitor<'de>>(
self,
len: usize,
visitor: V
) -> Result<V::Value>
fn deserialize_tuple<V: Visitor<'de>>( self, len: usize, visitor: V ) -> Result<V::Value>
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>
fn deserialize_tuple_struct<V: Visitor<'de>>( self, _name: &'static str, len: usize, visitor: V ) -> Result<V::Value>
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>
fn deserialize_map<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
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>
fn deserialize_struct<V: Visitor<'de>>( self, _name: &'static str, fields: &'static [&'static str], visitor: V ) -> Result<V::Value>
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>
fn deserialize_enum<V: Visitor<'de>>( self, _name: &'static str, _variants: &'static [&'static str], visitor: V ) -> Result<V::Value>
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>
fn deserialize_identifier<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value>
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>
fn deserialize_ignored_any<V: Visitor<'de>>( self, _visitor: V ) -> Result<V::Value>
Deserialize
type needs to deserialize a value whose type
doesn’t matter because it is ignored. Read moresource§fn deserialize_i128<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, Self::Error>where
V: Visitor<'de>,
fn deserialize_i128<V>( self, visitor: V ) -> Result<<V as Visitor<'de>>::Value, Self::Error>where V: Visitor<'de>,
source§fn deserialize_u128<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, Self::Error>where
V: Visitor<'de>,
fn deserialize_u128<V>( self, visitor: V ) -> Result<<V as Visitor<'de>>::Value, Self::Error>where V: Visitor<'de>,
source§fn is_human_readable(&self) -> bool
fn is_human_readable(&self) -> bool
Deserialize
implementations should expect to
deserialize their human-readable form. Read more