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

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