rw-types 0.2.0

Library for reading and writing types.
Documentation
use std::{fs::File, io};

use rw_types::prelude::*;

#[derive(Debug, PartialEq)]
struct Vec2 {
    x: f32,
    y: f32,
}

impl Readable for Vec2 {
    fn read(mut reader: impl ReadExt, endian: Endian) -> std::io::Result<Self> {
        let x = reader.read_ty::<f32>(endian)?;
        let y = reader.read_ty::<f32>(endian)?;
        let vec2 = Self { x, y };
        Ok(vec2)
    }
}

impl Writable for Vec2 {
    fn write(&self, mut writer: impl WriteExt, endian: Endian) -> io::Result<()> {
        writer.write_ty::<f32>(&self.x, endian)?;
        writer.write_ty::<f32>(&self.y, endian)?;
        Ok(())
    }
}

fn main() -> io::Result<()> {
    let vec2 = Vec2 { x: -50.0, y: 250.0 };

    let mut file = File::create("file.bin")?;
    file.write_ty::<Vec2>(&vec2, Endian::Little)?;

    let mut file = File::open("file.bin")?;
    assert_eq!(file.read_ty::<Vec2>(Endian::Little)?, vec2);

    Ok(())
}