Skip to main content

nurtex_codec/
read.rs

1use std::io::Read;
2
3/// Вспомогательная функция для чтения одного байта из буффера
4pub 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
10/// Вспомогательная функция чтения байтов из буффера
11pub 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}