Skip to main content

Module enc_into_buffer

Module enc_into_buffer 

Source
Expand description

EncodeIntoBuffer trait for zero-allocation encoding Buffer-based encoding trait for zero-allocation varint encoding.

This module provides the EncodeIntoBuffer trait, which allows encoding values into an existing buffer without allocating. This is useful for performance-critical code paths where allocations should be minimized.

§Performance Benefits

Using EncodeIntoBuffer instead of EncodeInto provides:

  • Zero allocations: Reuses existing buffer capacity
  • Better cache locality: Fewer heap operations
  • Batch encoding: Encode multiple values into one buffer
  • Predictable performance: No allocation pauses

§Use Cases

  • Hot paths in serialization code
  • Encoding multiple values sequentially
  • Systems with allocation constraints
  • Performance-sensitive applications

§Examples

§Single value encoding

use multi_trait::EncodeIntoBuffer;

let mut buffer = Vec::new();
42u8.encode_into_buffer(&mut buffer);
assert_eq!(buffer, vec![42]);

§Sequential encoding (multiple values)

use multi_trait::EncodeIntoBuffer;

let mut buffer = Vec::new();
42u8.encode_into_buffer(&mut buffer);
1000u16.encode_into_buffer(&mut buffer);
100000u32.encode_into_buffer(&mut buffer);

// All three values encoded in one buffer with a single allocation
assert!(buffer.len() > 3);

§Buffer reuse

use multi_trait::EncodeIntoBuffer;

let mut buffer = Vec::with_capacity(100);
for i in 0u8..10 {
    i.encode_into_buffer(&mut buffer);
}
// Buffer was reused for all 10 values with no additional allocations
assert_eq!(buffer.len(), 10);

Traits§

EncodeIntoBuffer
Trait for encoding values into an existing buffer.