Skip to main content

gaia_binary/
traits.rs

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