1
2
3
4
5
6
7
8
9
10
11
12
13
use super::{
    error::SerdeErr,
    reader_writer::{BitReader, BitWrite},
};

/// A trait for objects that can be serialized to a bitstream.
pub trait Serde: Sized + Clone + PartialEq {
    /// Serialize Self to a BitWriter
    fn ser(&self, writer: &mut dyn BitWrite);

    /// Parse Self from a BitReader
    fn de(reader: &mut BitReader) -> Result<Self, SerdeErr>;
}