pub trait Serialize<F: Formula + ?Sized> {
// Required methods
fn serialize<B>(self, sizes: &mut Sizes, buffer: B) -> Result<(), B::Error>
where Self: Sized,
B: Buffer;
fn size_hint(&self) -> Option<Sizes>;
}
Expand description
Trait for types that can be serialized
into raw bytes with specified F:
Formula
.
Implementations must write data according to the formula. Doing otherwise may result in errors during deserialization. Where errors may be both failures to deserialize and incorrect deserialized values.
Examples
struct ThreeBytes;
impl Formula for ThreeBytes {
const MAX_STACK_SIZE: Option<usize> = Some(3);
const EXACT_SIZE: bool = true;
const HEAPLESS: bool = true;
}
struct Qwe;
impl Serialize<ThreeBytes> for Qwe {
fn serialize<B>(self, sizes: &mut Sizes, buffer: B) -> Result<(), B::Error>
where
Self: Sized,
B: Buffer,
{
write_bytes(b"qwe", sizes, buffer)
}
fn size_hint(&self) -> Option<Sizes> {
Some(Sizes::with_stack(3))
}
}