use std::io;
use crate::{Endian, read::Readable};
pub trait ReadExt: io::Read {
fn read_ty<R: Readable>(&mut self, endian: Endian) -> io::Result<R>;
fn read_ty_be<R: Readable>(&mut self) -> io::Result<R>;
fn read_ty_le<R: Readable>(&mut self) -> io::Result<R>;
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)
}
}