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§
- Encode
Into Buffer - Trait for encoding values into an existing buffer.