1use std::io::Read;
2
3pub fn read_byte(buffer: &mut std::io::Cursor<&[u8]>) -> Option<u8> {
5 let mut buf = [0u8; 1];
6 buffer.read_exact(&mut buf).ok()?;
7 Some(buf[0])
8}
9
10pub fn read_bytes<'a>(buffer: &'a mut std::io::Cursor<&[u8]>, length: usize) -> Option<&'a [u8]> {
12 if length > (buffer.get_ref().len() - buffer.position() as usize) {
13 return None;
14 }
15
16 let initial_position = buffer.position() as usize;
17 buffer.set_position(buffer.position() + length as u64);
18 let data = &buffer.get_ref()[initial_position..initial_position + length];
19
20 Some(data)
21}