minbin 0.1.1

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

#[test]
fn test_tuple_2() {
    let expected = (0u8, 1);

    let mut buffer = vec![0u8; expected.byte_count()];
    let write_pos = write_bytes(&expected, &mut buffer).unwrap();
    let (actual, read_pos): ((u8, u8), usize) = read_bytes(&buffer[..write_pos]).unwrap();

    assert_eq!(expected.byte_count(), read_pos);
    assert_eq!(expected, actual);
}

#[test]
fn test_tuple_12() {
    let expected = (0u8, 1u8, 2u8, 3u8, 4u8, 5u8, 6u8, 7u8, 8u8, 9u8, 10u8, 11u8);

    let mut buffer = vec![0u8; expected.byte_count()];
    let write_pos = write_bytes(&expected, &mut buffer).unwrap();
    let (actual, read_pos): ((u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8), usize) =
        read_bytes(&buffer[..write_pos]).unwrap();

    assert_eq!(expected.byte_count(), read_pos);
    assert_eq!(expected, actual);
}

#[test]
fn test_tuple_containers() {
    let expected = (Some(1u8), "");

    let mut buffer = vec![0u8; expected.byte_count()];
    let write_pos = write_bytes(&expected, &mut buffer).unwrap();
    let (actual, read_pos): ((Option<u8>, &str), usize) = read_bytes(&buffer[..write_pos]).unwrap();

    assert_eq!(expected.byte_count(), read_pos);
    assert_eq!(expected, actual);
}