diff options
Diffstat (limited to 'evc/src/ser.rs')
-rw-r--r-- | evc/src/ser.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/evc/src/ser.rs b/evc/src/ser.rs index 3b7814f..61ca684 100644 --- a/evc/src/ser.rs +++ b/evc/src/ser.rs @@ -141,6 +141,18 @@ impl Ser for usize { Ok(unsafe { std::mem::transmute_copy(&buf) }) } } +impl Ser for isize { + fn write(&self, sink: &mut impl Write) -> anyhow::Result<()> { + Ok(sink + .write_all(&unsafe { std::mem::transmute_copy::<_, [u8; 8]>(self) }) + .context("write isize")?) + } + fn read(source: &mut impl Read) -> anyhow::Result<Self> { + let mut buf = [0u8; 8]; + source.read_exact(&mut buf)?; + Ok(unsafe { std::mem::transmute_copy(&buf) }) + } +} impl Ser for f32 { fn write(&self, sink: &mut impl Write) -> anyhow::Result<()> { Ok(sink @@ -171,6 +183,7 @@ mod test { use super::{Ser, Sink}; use crate::header::Header; use crate::ser::Source; + use crate::vec2::Vec2; use std::fmt::Debug; use std::io::Cursor; @@ -196,7 +209,7 @@ mod test { fn header() { test_ser(Header { frame_count: 123, - resolution: (13, 37), + resolution: Vec2 { x: 13, y: 37 }, }); } #[test] |