minbin 0.1.1

Minimal, manual, no-std, zero-dependency, big-endian binary serialization.
Documentation
use minbin::{BytesReader, ToFromByteError};

#[test]
fn reader_partial() {
    let data = [1, 2, 3, 4, 5, 6];
    let mut reader = BytesReader::new(&data);

    assert_eq!(reader.read_bytes(3).unwrap(), &[1, 2, 3]);
    assert_eq!(reader.read_bytes(2).unwrap(), &[4, 5]);
    assert_eq!(reader.pos, 5);
}

#[test]
fn reader_full() {
    let data = [0u8, 1u8, 2u8, 3u8];
    let mut reader = BytesReader::new(&data);

    assert_eq!(reader.read_bytes(4).unwrap(), &[0u8, 1u8, 2u8, 3u8]);
    assert_eq!(reader.pos, data.len());
}

#[test]
fn reader_overflow() {
    let data = [1, 2, 3];
    let mut reader = BytesReader::new(&data);

    let err = reader.read_bytes(4).unwrap_err();
    assert_eq!(err, ToFromByteError::NotEnoughBytes);
}

#[test]
fn reader_chunks() {
    let data = b"simbin";
    let mut reader = BytesReader::new(data);

    assert_eq!(reader.read_bytes(3).unwrap(), b"sim");
    assert_eq!(reader.pos, 3);
    assert_eq!(reader.read_bytes(3).unwrap(), b"bin");
    assert_eq!(reader.pos, 3 + 3);
}