Skip to main content

gaia_binary/
traits.rs

1use std::io::{Read, Write};
2
3/// Trait for defining how data is encoded in a binary stream.
4pub trait BinaryFormat {
5    /// Read a u16 value.
6    fn read_u16<R: Read>(reader: &mut R) -> std::io::Result<u16>;
7    /// Write a u16 value.
8    fn write_u16<W: Write>(writer: &mut W, value: u16) -> std::io::Result<()>;
9
10    /// Read a u32 value.
11    fn read_u32<R: Read>(reader: &mut R) -> std::io::Result<u32>;
12    /// Write a u32 value.
13    fn write_u32<W: Write>(writer: &mut W, value: u32) -> std::io::Result<()>;
14
15    /// Read a u64 value.
16    fn read_u64<R: Read>(reader: &mut R) -> std::io::Result<u64>;
17    /// Write a u64 value.
18    fn write_u64<W: Write>(writer: &mut W, value: u64) -> std::io::Result<()>;
19
20    /// Read an i16 value.
21    fn read_i16<R: Read>(reader: &mut R) -> std::io::Result<i16>;
22    /// Write an i16 value.
23    fn write_i16<W: Write>(writer: &mut W, value: i16) -> std::io::Result<()>;
24
25    /// Read an i32 value.
26    fn read_i32<R: Read>(reader: &mut R) -> std::io::Result<i32>;
27    /// Write an i32 value.
28    fn write_i32<W: Write>(writer: &mut W, value: i32) -> std::io::Result<()>;
29
30    /// Read an i64 value.
31    fn read_i64<R: Read>(reader: &mut R) -> std::io::Result<i64>;
32    /// Write an i64 value.
33    fn write_i64<W: Write>(writer: &mut W, value: i64) -> std::io::Result<()>;
34
35    /// Read an f32 value.
36    fn read_f32<R: Read>(reader: &mut R) -> std::io::Result<f32>;
37    /// Write an f32 value.
38    fn write_f32<W: Write>(writer: &mut W, value: f32) -> std::io::Result<()>;
39
40    /// Read an f64 value.
41    fn read_f64<R: Read>(reader: &mut R) -> std::io::Result<f64>;
42    /// Write an f64 value.
43    fn write_f64<W: Write>(writer: &mut W, value: f64) -> std::io::Result<()>;
44}