Packer

Trait Packer 

Source
pub trait Packer {
    // Required method
    fn pack(&self, writer: &mut BytesMut) -> Result<()>;
}
Expand description

Trait for types that can be packed into a compact binary format.

This trait provides compact serialization without schema evolution support. Use this when you need maximum performance and don’t require forward/backward compatibility.

§Errors

Returns EncoderError if the value cannot be packed.

Required Methods§

Source

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Pack the value into the given buffer without schema evolution support.

This method stores data in a compact format without field IDs or type tags. The format is not schema-evolution-friendly but offers better performance.

§Arguments
  • writer - The buffer to write the packed bytes into.

Implementations on Foreign Types§

Source§

impl Packer for bool

Packs a bool as a single tag byte: TAG_ZERO for false, TAG_ONE for true.

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl Packer for char

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl Packer for f32

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Packs an f32 as 4 bytes (little-endian IEEE 754) without a type tag.

Source§

impl Packer for f64

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Packs an f64 as TAG_NONE (for 0.0) or TAG_F64 + 8 bytes (little-endian IEEE 754).

Source§

impl Packer for i8

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl Packer for i16

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl Packer for i32

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl Packer for i64

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl Packer for i128

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl Packer for isize

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl Packer for u8

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl Packer for u16

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl Packer for u32

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl Packer for u64

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl Packer for u128

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl Packer for ()

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl Packer for usize

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl Packer for String

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl Packer for Bytes

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<K: Packer + Ord, V: Packer> Packer for BTreeMap<K, V>

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<K: Packer, V: Packer> Packer for HashMap<K, V>

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T0: Packer> Packer for (T0,)

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T0: Packer, T1: Packer> Packer for (T0, T1)

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T0: Packer, T1: Packer, T2: Packer> Packer for (T0, T1, T2)

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T0: Packer, T1: Packer, T2: Packer, T3: Packer> Packer for (T0, T1, T2, T3)

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T0: Packer, T1: Packer, T2: Packer, T3: Packer, T4: Packer> Packer for (T0, T1, T2, T3, T4)

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T0: Packer, T1: Packer, T2: Packer, T3: Packer, T4: Packer, T5: Packer> Packer for (T0, T1, T2, T3, T4, T5)

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T0: Packer, T1: Packer, T2: Packer, T3: Packer, T4: Packer, T5: Packer, T6: Packer> Packer for (T0, T1, T2, T3, T4, T5, T6)

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T0: Packer, T1: Packer, T2: Packer, T3: Packer, T4: Packer, T5: Packer, T6: Packer, T7: Packer> Packer for (T0, T1, T2, T3, T4, T5, T6, T7)

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T0: Packer, T1: Packer, T2: Packer, T3: Packer, T4: Packer, T5: Packer, T6: Packer, T7: Packer, T8: Packer> Packer for (T0, T1, T2, T3, T4, T5, T6, T7, T8)

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T0: Packer, T1: Packer, T2: Packer, T3: Packer, T4: Packer, T5: Packer, T6: Packer, T7: Packer, T8: Packer, T9: Packer> Packer for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T0: Packer, T1: Packer, T2: Packer, T3: Packer, T4: Packer, T5: Packer, T6: Packer, T7: Packer, T8: Packer, T9: Packer, T10: Packer> Packer for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T0: Packer, T1: Packer, T2: Packer, T3: Packer, T4: Packer, T5: Packer, T6: Packer, T7: Packer, T8: Packer, T9: Packer, T10: Packer, T11: Packer> Packer for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T: Packer + 'static> Packer for Vec<T>

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Packs a Vec<T> as a length-prefixed sequence.

Source§

impl<T: Packer + Eq + Hash> Packer for HashSet<T>

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T: Packer + Ord> Packer for BTreeSet<T>

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T: Packer> Packer for Option<T>

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T: Packer> Packer for &T

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T: Packer> Packer for Box<T>

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T: Packer> Packer for Arc<T>

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Source§

impl<T: Packer, const N: usize> Packer for [T; N]

Source§

fn pack(&self, writer: &mut BytesMut) -> Result<()>

Implementors§