naia_serde/serde.rs
1use super::{bit_reader::BitReader, bit_writer::BitWrite, error::SerdeErr};
2
3/// A trait for objects that can be serialized to a bitstream.
4pub trait Serde: Sized + Clone + PartialEq {
5 /// Serialize Self to a BitWriter
6 fn ser(&self, writer: &mut dyn BitWrite);
7
8 /// Parse Self from a BitReader
9 fn de(reader: &mut BitReader) -> Result<Self, SerdeErr>;
10
11 /// Return length of value in bits
12 fn bit_length(&self) -> u32;
13}
14
15pub trait ConstBitLength {
16 fn const_bit_length() -> u32;
17}