tbytes 0.1.0-alpha1

A tiny library for reading and writing typed data into buffers
Documentation
use tbytes::errors::TBytesError;
use tbytes::{BytesWriterFor, TBytesReader, TBytesReaderFor, TBytesWriter};

fn main() {
    type Content = (u8, i8, i16, f32, [u8; 2]);
    let mut buffer = [0u8; 10];

    let mut writer = TBytesWriter::from(buffer.as_mut_slice());
    println!("Initial writer state: {writer:?}");

    let into_values = (10u8, -20i8, 1048i16, 0.32f32, [10, 31u8]);
    writer.write(into_values.0).unwrap();
    writer.write(into_values.1).unwrap();
    writer.write(into_values.2).unwrap();
    writer.write(into_values.3).unwrap();
    writer.write_slice(&into_values.4).unwrap();

    println!("Final writer state: {writer:?}");
    assert!(matches!(writer.write(0u8), Err(TBytesError::OutOfBounds)));

    let reader = TBytesReader::from(buffer.as_slice());
    println!("Initial reader state: {reader:?}");

    let mut from_values: Content = Content::default();
    from_values.0 = reader.read().unwrap();
    from_values.1 = reader.read().unwrap();
    from_values.2 = reader.read().unwrap();
    from_values.3 = reader.read().unwrap();
    from_values.4 = reader.read_array().unwrap();

    assert!(matches!(
        reader.read() as Result<u8, TBytesError>,
        Err(TBytesError::OutOfBounds)
    ));
    println!("Final reader state: {reader:?}");

    assert_eq!(into_values, from_values);
}