aboutsummaryrefslogtreecommitdiff
path: root/src/utils/read.rs
blob: 185758ad1fea0da0d3485e3f2e0e8fbfdf3a08b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use std::io::{Read, Result as IOResult};

pub trait ReadUtils {
    fn read_arr<const S: usize>(&mut self) -> IOResult<[u8; S]>;

    fn read_vec(&mut self, size: usize) -> IOResult<Vec<u8>>;
}

impl<R: Read> ReadUtils for R {
    #[inline]
    fn read_arr<const S: usize>(&mut self) -> Result<[u8; S], std::io::Error> {
        let mut arr = [0; S];
        self.read(&mut arr)?;
        Ok(arr)
    }

    #[inline]
    fn read_vec(&mut self, size: usize) -> Result<Vec<u8>, std::io::Error> {
        let mut vec = vec![0; size];
        self.read(&mut vec)?;
        Ok(vec)
    }
}