basic/
basic.rs

1use byteorder_cursor::{BigEndian, BufferTooSmall, Cursor, LittleEndian};
2
3fn main() -> Result<(), BufferTooSmall> {
4    let mut buffer = [0u8; 16];
5    let mut cursor = Cursor::new(&mut buffer[..]);
6
7    cursor.write_u8(1);
8    cursor.write_u16::<BigEndian>(5);
9    cursor.write_u32::<LittleEndian>(16);
10    cursor.write_bytes(&[1, 2, 3, 4, 5]);
11
12    println!("Remaining space in cursor is {} bytes", cursor.remaining());
13    cursor.set_position(0);
14    cursor.check_remaining(7)?;
15
16    let x = cursor.read_u8();
17    let y = cursor.read_u16::<BigEndian>();
18    let z = cursor.read_u32::<LittleEndian>();
19
20    let mut w = [0u8; 5];
21    cursor.read_bytes(&mut w);
22
23    println!("Read-back from buffer: {x}, {y}, {z}, {w:?}");
24    println!("Cursor is now at position {}", cursor.position());
25
26    Ok(())
27}