[][src]Trait read_from::ReadFrom

pub trait ReadFrom: Sized {
    type Error;
    fn read_from<R: Read>(input: R) -> Result<Self, Self::Error>;
}

Used to deserialize types from an input stream (i.e. a Read implementation).

Example

This implements ReadFrom for a simple TinyRational struct.

use read_from::ReadFrom;
use std::io::{self, Cursor, Read};

#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct TinyRational {
   numer: i8,
   denom: u8
}
 
#[derive(Debug)]
pub enum TinyRationalReadError {
   DenomIsZero,
   Io(io::Error)
}

impl ReadFrom for TinyRational {
   type Error = TinyRationalReadError;

   fn read_from<R: Read>(mut inp: R) -> Result<Self, Self::Error> {
      let mut buf = [0; 2];
      inp.read_exact(&mut buf).map_err(TinyRationalReadError::Io)?;
      let numer = buf[0] as i8;
      let denom = buf[1] as u8;
      if denom == 0 {
         Err(TinyRationalReadError::DenomIsZero)
      } else {
         Ok(Self { numer, denom })
      }
   }
}

assert_eq!(
   TinyRational::read_from(Cursor::new(&[3, 4])).unwrap(),
   TinyRational { numer: 3, denom: 4 });
assert!(matches!(
   TinyRational::read_from(Cursor::new(&[3, 0])).unwrap_err(),
   TinyRationalReadError::DenomIsZero
));

Associated Types

type Error

What error can happen when trying to read?

Loading content...

Required methods

fn read_from<R: Read>(input: R) -> Result<Self, Self::Error>

Attempts to construct Self from the given input stream.

Loading content...

Implementations on Foreign Types

impl ReadFrom for u8[src]

type Error = Error

impl ReadFrom for i8[src]

type Error = Error

impl ReadFrom for [u8; 0][src]

type Error = Error

impl ReadFrom for [u8; 1][src]

type Error = Error

impl ReadFrom for [u8; 2][src]

type Error = Error

impl ReadFrom for [u8; 3][src]

type Error = Error

impl ReadFrom for [u8; 4][src]

type Error = Error

impl ReadFrom for [u8; 5][src]

type Error = Error

impl ReadFrom for [u8; 6][src]

type Error = Error

impl ReadFrom for [u8; 7][src]

type Error = Error

impl ReadFrom for [u8; 8][src]

type Error = Error

impl ReadFrom for [u8; 9][src]

type Error = Error

impl ReadFrom for [u8; 10][src]

type Error = Error

impl ReadFrom for [u8; 11][src]

type Error = Error

impl ReadFrom for [u8; 12][src]

type Error = Error

impl ReadFrom for [u8; 13][src]

type Error = Error

impl ReadFrom for [u8; 14][src]

type Error = Error

impl ReadFrom for [u8; 15][src]

type Error = Error

impl ReadFrom for [u8; 16][src]

type Error = Error

impl ReadFrom for [u8; 17][src]

type Error = Error

impl ReadFrom for [u8; 18][src]

type Error = Error

impl ReadFrom for [u8; 19][src]

type Error = Error

impl ReadFrom for [u8; 20][src]

type Error = Error

impl ReadFrom for [u8; 21][src]

type Error = Error

impl ReadFrom for [u8; 22][src]

type Error = Error

impl ReadFrom for [u8; 23][src]

type Error = Error

impl ReadFrom for [u8; 24][src]

type Error = Error

impl ReadFrom for [u8; 25][src]

type Error = Error

impl ReadFrom for [u8; 26][src]

type Error = Error

impl ReadFrom for [u8; 27][src]

type Error = Error

impl ReadFrom for [u8; 28][src]

type Error = Error

impl ReadFrom for [u8; 29][src]

type Error = Error

impl ReadFrom for [u8; 30][src]

type Error = Error

impl ReadFrom for [u8; 31][src]

type Error = Error

impl ReadFrom for [u8; 32][src]

type Error = Error

impl ReadFrom for [u8; 64][src]

type Error = Error

impl ReadFrom for [u8; 128][src]

type Error = Error

impl ReadFrom for [u8; 256][src]

type Error = Error

impl ReadFrom for [u8; 512][src]

type Error = Error

impl ReadFrom for [u8; 1024][src]

type Error = Error

impl ReadFrom for [u8; 2048][src]

type Error = Error

impl ReadFrom for [u8; 4096][src]

type Error = Error

impl ReadFrom for [u8; 8192][src]

type Error = Error

impl ReadFrom for [u8; 50][src]

type Error = Error

impl ReadFrom for [u8; 100][src]

type Error = Error

impl ReadFrom for [u8; 250][src]

type Error = Error

impl ReadFrom for [u8; 500][src]

type Error = Error

impl ReadFrom for [u8; 1000][src]

type Error = Error

impl ReadFrom for [u8; 2500][src]

type Error = Error

impl ReadFrom for [u8; 5000][src]

type Error = Error

impl ReadFrom for [u8; 10000][src]

type Error = Error

Loading content...

Implementors

impl ReadFrom for BigEndian<f32>[src]

type Error = Error

impl ReadFrom for BigEndian<f64>[src]

type Error = Error

impl ReadFrom for BigEndian<i8>[src]

type Error = Error

impl ReadFrom for BigEndian<i16>[src]

type Error = Error

impl ReadFrom for BigEndian<i32>[src]

type Error = Error

impl ReadFrom for BigEndian<i64>[src]

type Error = Error

impl ReadFrom for BigEndian<i128>[src]

type Error = Error

impl ReadFrom for BigEndian<isize>[src]

type Error = Error

impl ReadFrom for BigEndian<u8>[src]

type Error = Error

impl ReadFrom for BigEndian<u16>[src]

type Error = Error

impl ReadFrom for BigEndian<u32>[src]

type Error = Error

impl ReadFrom for BigEndian<u64>[src]

type Error = Error

impl ReadFrom for BigEndian<u128>[src]

type Error = Error

impl ReadFrom for BigEndian<usize>[src]

type Error = Error

impl ReadFrom for LittleEndian<f32>[src]

type Error = Error

impl ReadFrom for LittleEndian<f64>[src]

type Error = Error

impl ReadFrom for LittleEndian<i8>[src]

type Error = Error

impl ReadFrom for LittleEndian<i16>[src]

type Error = Error

impl ReadFrom for LittleEndian<i32>[src]

type Error = Error

impl ReadFrom for LittleEndian<i64>[src]

type Error = Error

impl ReadFrom for LittleEndian<i128>[src]

type Error = Error

impl ReadFrom for LittleEndian<isize>[src]

type Error = Error

impl ReadFrom for LittleEndian<u8>[src]

type Error = Error

impl ReadFrom for LittleEndian<u16>[src]

type Error = Error

impl ReadFrom for LittleEndian<u32>[src]

type Error = Error

impl ReadFrom for LittleEndian<u64>[src]

type Error = Error

impl ReadFrom for LittleEndian<u128>[src]

type Error = Error

impl ReadFrom for LittleEndian<usize>[src]

type Error = Error

impl ReadFrom for NativeEndian<f32>[src]

type Error = Error

impl ReadFrom for NativeEndian<f64>[src]

type Error = Error

impl ReadFrom for NativeEndian<i8>[src]

type Error = Error

impl ReadFrom for NativeEndian<i16>[src]

type Error = Error

impl ReadFrom for NativeEndian<i32>[src]

type Error = Error

impl ReadFrom for NativeEndian<i64>[src]

type Error = Error

impl ReadFrom for NativeEndian<i128>[src]

type Error = Error

impl ReadFrom for NativeEndian<isize>[src]

type Error = Error

impl ReadFrom for NativeEndian<u8>[src]

type Error = Error

impl ReadFrom for NativeEndian<u16>[src]

type Error = Error

impl ReadFrom for NativeEndian<u32>[src]

type Error = Error

impl ReadFrom for NativeEndian<u64>[src]

type Error = Error

impl ReadFrom for NativeEndian<u128>[src]

type Error = Error

impl ReadFrom for NativeEndian<usize>[src]

type Error = Error

Loading content...