rw-types 0.2.0

Library for reading and writing types.
Documentation
use std::io;

use crate::{Endian, read::Readable};

/// An extension to the [`io::Read`] trait.
pub trait ReadExt: io::Read {
    /// Reads `R` with the specified endian.
    fn read_ty<R: Readable>(&mut self, endian: Endian) -> io::Result<R>;
    /// Reads `R` with big endian.
    fn read_ty_be<R: Readable>(&mut self) -> io::Result<R>;
    /// Reads `R` with little endian.
    fn read_ty_le<R: Readable>(&mut self) -> io::Result<R>;
    /// Reads `R` with native endian.
    fn read_ty_ne<R: Readable>(&mut self) -> io::Result<R>;
}

impl<T: io::Read> ReadExt for T {
    #[inline(always)]
    fn read_ty<R: Readable>(&mut self, endian: Endian) -> io::Result<R> {
        R::read(self, endian)
    }
    #[inline(always)]
    fn read_ty_be<R: Readable>(&mut self) -> io::Result<R> {
        R::read(self, Endian::Big)
    }
    #[inline(always)]
    fn read_ty_le<R: Readable>(&mut self) -> io::Result<R> {
        R::read(self, Endian::Little)
    }
    #[inline(always)]
    fn read_ty_ne<R: Readable>(&mut self) -> io::Result<R> {
        R::read(self, Endian::Native)
    }
}