Trait postcard::ser_flavors::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<()>

The try_push() trait method can be used to 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<()>

The try_extend() trait method can be implemented when there is a more efficient way of 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 AllocVec

§

type Output = Vec<u8>

source§

impl Flavor for Size

source§

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

§

type Output = &'a mut [u8]

source§

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

§

type Output = <B as Flavor>::Output

source§

impl<T> Flavor for postcard::ser_flavors::eio::WriteFlavor<T>
where T: Write,

§

type Output = T

source§

impl<T> Flavor for postcard::ser_flavors::io::WriteFlavor<T>
where T: Write,

§

type Output = T

source§

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

§

type Output = T

source§

impl<const B: usize> Flavor for HVec<B>

§

type Output = Vec<u8, B>