Skip to main content

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.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl Packer for ()

Source§

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

Source§

impl Packer for Bytes

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 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 usize

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, 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<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> 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> 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> 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> 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> 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> 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> Packer for (T0, T1, T2, T3)

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> Packer for (T0, T1)

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<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, const N: usize> Packer for [T; N]

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 Arc<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 Option<T>

Source§

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

Implementors§