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(())
}