diff options
Diffstat (limited to 'src/reader.rs')
| -rw-r--r-- | src/reader.rs | 30 |
1 files changed, 4 insertions, 26 deletions
diff --git a/src/reader.rs b/src/reader.rs index 00f66cb..6f18e0b 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -1,5 +1,7 @@ use std::{fs::File, io::{BufReader, Read}}; +use crate::byte_encode::ByteEncode; + pub struct FileReader { buf_reader: BufReader<File> @@ -18,39 +20,15 @@ impl FileReader { { self.buf_reader.seek_relative(c as i64).expect("Cannot seek!"); } - pub fn read_array<const N: usize, T: FromBytes<N> + Sized, const C: usize>(&mut self) -> [T; C] + pub fn read_array<const N: usize, T: ByteEncode<N> + Sized, const C: usize>(&mut self) -> [T; C] { std::array::from_fn(|_| self.read()) } - pub fn read<const N: usize, T: FromBytes<N>>(&mut self) -> T + pub fn read<const N: usize, T: ByteEncode<N>>(&mut self) -> T { let mut data = [0u8; N]; self.buf_reader.read_exact(&mut data).expect("Bad read"); T::from_le_bytes(&data) } } - -pub trait FromBytes<const N: usize>: Sized + Copy -{ - fn from_le_bytes(buffer: &[u8; N]) -> Self; -} - -impl FromBytes<4> for u32 -{ - fn from_le_bytes(buffer: &[u8; 4]) -> Self { - u32::from_le_bytes(*buffer) - } -} -impl FromBytes<2> for u16 -{ - fn from_le_bytes(buffer: &[u8; 2]) -> Self { - u16::from_le_bytes(*buffer) - } -} -impl FromBytes<1> for u8 -{ - fn from_le_bytes(buffer: &[u8; 1]) -> Self { - u8::from_le_bytes(*buffer) - } -} |
