1use std::io;
2
3use crate::{Endian, read::Readable};
4
5pub trait ReadExt: io::Read {
7 fn read_ty<R: Readable>(&mut self, endian: Endian) -> io::Result<R>;
9 fn read_ty_be<R: Readable>(&mut self) -> io::Result<R>;
11 fn read_ty_le<R: Readable>(&mut self) -> io::Result<R>;
13 fn read_ty_ne<R: Readable>(&mut self) -> io::Result<R>;
15}
16
17impl<T: io::Read> ReadExt for T {
18 #[inline(always)]
19 fn read_ty<R: Readable>(&mut self, endian: Endian) -> io::Result<R> {
20 R::read(self, endian)
21 }
22 #[inline(always)]
23 fn read_ty_be<R: Readable>(&mut self) -> io::Result<R> {
24 R::read(self, Endian::Big)
25 }
26 #[inline(always)]
27 fn read_ty_le<R: Readable>(&mut self) -> io::Result<R> {
28 R::read(self, Endian::Little)
29 }
30 #[inline(always)]
31 fn read_ty_ne<R: Readable>(&mut self) -> io::Result<R> {
32 R::read(self, Endian::Native)
33 }
34}