pub trait Reader<Output> {
    // Required method
    fn read(buf: &mut ByteReader) -> Result<Output, Error>;

    // Provided method
    fn read_from_slice(buf: &[u8]) -> Result<Output, Error> { ... }
}
Expand description

Allows you to read from a ByteReader without needing to know the type.

use binary_util::io::{ByteReader, Reader};

pub struct MyStruct {
   pub a: u8,
   pub b: u8
}

impl Reader for MyStruct {
    fn read(&self, buf: &mut ByteReader) -> Result<Self, std::io::Error> {
       let a = buf.read_u8()?;
       let b = buf.read_u8()?;
       Ok(Self { a, b })
    }
}

Required Methods§

source

fn read(buf: &mut ByteReader) -> Result<Output, Error>

Reads Self from a ByteReader.

For automatic implementations, use the #[derive(BinaryIo)] macro.

Provided Methods§

source

fn read_from_slice(buf: &[u8]) -> Result<Output, Error>

Reads Self from a &[u8].

This is a convenience method that creates a ByteReader from the slice and calls read.

Implementations on Foreign Types§

source§

impl Reader<SocketAddr> for SocketAddr

source§

impl Reader<char> for char

source§

impl Reader<f64> for f64

source§

impl Reader<i32> for i32

source§

impl Reader<i8> for i8

source§

impl<T> Reader<Option<T>> for Option<T>where T: Reader<T> + Sized,

source§

fn read(buf: &mut ByteReader) -> Result<Option<T>, Error>

source§

impl Reader<i16> for i16

source§

impl Reader<String> for String

source§

impl Reader<u128> for u128

source§

impl Reader<u64> for u64

source§

impl Reader<u32> for u32

source§

impl<T> Reader<Vec<T, Global>> for Vec<T>where T: Reader<T> + Sized,

source§

fn read(buf: &mut ByteReader) -> Result<Vec<T>, Error>

source§

impl Reader<i128> for i128

source§

impl Reader<i64> for i64

source§

impl Reader<bool> for bool

source§

impl Reader<u16> for u16

source§

impl Reader<f32> for f32

source§

impl Reader<u8> for u8

Implementors§