Trait Flavor

Source
pub trait Flavor {
    type Output;

    // Required methods
    fn try_push(&mut self, data: u8) -> Result<()>;
    fn finalize(self) -> Result<Self::Output>;

    // Provided method
    fn try_extend(&mut self, data: &[u8]) -> Result<()> { ... }
}
Expand description

The serialization Flavor trait

This is used as the primary way to encode serialized data into some kind of buffer, or modify that data in a middleware style pattern.

See the module level docs for an example of how flavors are used.

Required Associated Types§

Source

type Output

The Output type is what this storage “resolves” to when the serialization is complete, such as a slice or a Vec of some sort.

Required Methods§

Source

fn try_push(&mut self, data: u8) -> Result<()>

Push a single byte to be modified and/or stored.

Source

fn finalize(self) -> Result<Self::Output>

Finalize the serialization process.

Provided Methods§

Source

fn try_extend(&mut self, data: &[u8]) -> Result<()>

Override this method when you want to customize processing multiple bytes at once, such as copying a slice to the output, rather than iterating over one byte at a time.

Implementors§

Source§

impl Flavor for Size

Source§

type Output = usize

Source§

impl<'a> Flavor for Slice<'a>

Source§

type Output = &'a mut [u8]

Source§

impl<B> Flavor for Cobs<B>
where B: Flavor + IndexMut<usize, Output = u8>,

Source§

impl<T> Flavor for ExtendFlavor<T>
where T: Extend<u8>,