Trait byte::TryRead
[−]
[src]
pub trait TryRead<'a, Ctx = ()> where
Self: Sized, { fn try_read(bytes: &'a [u8], ctx: Ctx) -> Result<(Self, usize)>; }
A data structure that can be deserialized. Types implement this trait can be read() from byte slice.
Required Methods
fn try_read(bytes: &'a [u8], ctx: Ctx) -> Result<(Self, usize)>
Try to read from bytes using context.
Read the value out of bytes; the passed-in bytes is implicitly splitted by offset and should be read at head.
If success, try_read() should return a tuple of value and the number of bytes it consumed.
Example
use byte::*; // Demo type showing how to read boolean from bytes. // This functionality is already provided by this crate. pub struct Bool(bool); impl<'a> TryRead<'a> for Bool { #[inline] fn try_read(bytes: &'a [u8], _ctx: ()) -> Result<(Self, usize)> { check_len(bytes, 1)?; Ok((Bool(bytes[0] != 0), 1)) } }
Error
If try_read() returns Error::BadOffset, it will be translated into Error::Incomplete.
See byte::Error documentation for details.
Implementors
impl<'a> TryRead<'a, Str> for &'a strimpl<'a> TryRead<'a, Endian> for u8impl<'a> TryRead<'a, Endian> for u16impl<'a> TryRead<'a, Endian> for u32impl<'a> TryRead<'a, Endian> for u64impl<'a> TryRead<'a, Endian> for i8impl<'a> TryRead<'a, Endian> for i16impl<'a> TryRead<'a, Endian> for i32impl<'a> TryRead<'a, Endian> for i64impl<'a> TryRead<'a, Endian> for usizeimpl<'a> TryRead<'a, Endian> for isizeimpl<'a> TryRead<'a, Endian> for f32impl<'a> TryRead<'a, Endian> for f64impl<'a> TryRead<'a, Bytes> for &'a [u8]impl<'a> TryRead<'a> for bool