1use crate::errors::FileParseError;
2
3pub fn extract_u64(buffer: &[u8], offset: usize) -> Result<u64, FileParseError> {
4 buffer
5 .get(offset..offset + 8)
6 .ok_or(FileParseError::BufferOverflow)
7 .and_then(|bytes| bytes.try_into().map_err(|_| FileParseError::BufferOverflow))
8 .map(u64::from_le_bytes)
9}
10
11pub fn extract_u32(buffer: &[u8], offset: usize) -> Result<u32, FileParseError> {
12 buffer
13 .get(offset..offset + 4)
14 .ok_or(FileParseError::BufferOverflow)
15 .and_then(|bytes| {
16 bytes
17 .try_into()
18 .map_err(|_| FileParseError::BufferOverflow)
19 .map(u32::from_le_bytes)
20 })
21}
22
23pub fn extract_u16(buffer: &[u8], offset: usize) -> Result<u16, FileParseError> {
24 buffer
25 .get(offset..offset + 2)
26 .ok_or(FileParseError::BufferOverflow)
27 .and_then(|bytes| bytes.try_into().map_err(|_| FileParseError::BufferOverflow))
28 .map(u16::from_le_bytes)
29}