1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
use crate::prelude::*;

#[cfg(feature = "read")]
pub fn read_bytes<'a>(len: usize, bytes: &'a [u8], offset: &'_ mut usize) -> ReadResult<&'a [u8]> {
    let start = *offset;
    let end = start.checked_add(len).ok_or(ReadError::InvalidFormat(InvalidFormat::EndOfFile))?;
    if end > bytes.len() {
        return Err(ReadError::InvalidFormat(InvalidFormat::EndOfFile));
    }
    *offset = end;
    Ok(&bytes[start..end])
}