linux_perf_data/jitdump/
read_exact.rs1pub trait ReadExactOrUntilEof {
2 fn read_exact_or_until_eof(&mut self, dest: &mut [u8]) -> Result<usize, std::io::Error>;
4}
5
6impl<R: std::io::Read> ReadExactOrUntilEof for R {
7 fn read_exact_or_until_eof(&mut self, mut dest: &mut [u8]) -> Result<usize, std::io::Error> {
8 let mut total_read = 0;
9 while !dest.is_empty() {
10 match self.read(dest)? {
11 0 => break,
12 n => {
13 total_read += n;
14 dest = &mut dest[n..];
15 }
16 }
17 }
18 Ok(total_read)
19 }
20}