Skip to main content

EncodeFast

Trait EncodeFast 

Source
pub unsafe trait EncodeFast: Encode {
    // Provided methods
    fn encoded_size_fast(&self) -> usize { ... }
    unsafe fn encode_fast(&self, buffer: *mut u8, offset: &mut usize) { ... }
    unsafe fn encode_fast_at_offset(&self, buffer: *mut u8, offset: usize) { ... }
    unsafe fn decode_and_append_fast(
        buffer: *const u8,
        offset: &mut usize,
        output: &mut Vec<u8>,
    ) { ... }
    unsafe fn decode_and_append_fast_at_offset(
        buffer: *const u8,
        offset: usize,
        output: &mut Vec<u8>,
    ) { ... }
}
Expand description

Extreme-performance encoding path.

Currently selected explicitly by log_fast!() / prewarm_fast!(); only supports an empty format specifier by default.

§Safety

Implementors must guarantee that encode_fast writes exactly encoded_size_fast() bytes starting at buffer + *offset, and that decode_and_append_fast reads the same number of bytes from a buffer previously written by encode_fast.

Provided Methods§

Source

fn encoded_size_fast(&self) -> usize

Returns the encoded byte size using the fast path (defaults to Encode::encoded_size).

Source

unsafe fn encode_fast(&self, buffer: *mut u8, offset: &mut usize)

Encodes the value using the fast path (defaults to Encode::encode).

§Safety

Same requirements as Encode::encode.

Source

unsafe fn encode_fast_at_offset(&self, buffer: *mut u8, offset: usize)

Encodes the value using the fast path at a fixed byte offset.

The default implementation forwards to Encode::encode_at_offset, which lets fixed-width types benefit from compile-time layout specialization without duplicating logic.

§Safety

Same requirements as Encode::encode_at_offset.

Source

unsafe fn decode_and_append_fast( buffer: *const u8, offset: &mut usize, output: &mut Vec<u8>, )

Decodes and appends using the fast path with an empty format specifier (defaults to Encode::decode_and_format).

§Safety

Same requirements as Encode::decode_and_format.

Source

unsafe fn decode_and_append_fast_at_offset( buffer: *const u8, offset: usize, output: &mut Vec<u8>, )

Decodes and appends using the fast path from buffer + offset.

The default implementation forwards to EncodeFast::decode_and_append_fast using a local mutable offset.

§Safety

Same requirements as EncodeFast::decode_and_append_fast.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl EncodeFast for &str

Source§

impl EncodeFast for bool

Source§

impl EncodeFast for f32

Source§

impl EncodeFast for f64

Source§

impl EncodeFast for i8

Source§

impl EncodeFast for i16

Source§

impl EncodeFast for i32

Source§

unsafe fn decode_and_append_fast_at_offset( buffer: *const u8, offset: usize, output: &mut Vec<u8>, )

Source§

impl EncodeFast for i64

Source§

unsafe fn decode_and_append_fast_at_offset( buffer: *const u8, offset: usize, output: &mut Vec<u8>, )

Source§

impl EncodeFast for isize

Source§

unsafe fn decode_and_append_fast_at_offset( buffer: *const u8, offset: usize, output: &mut Vec<u8>, )

Source§

impl EncodeFast for u8

Source§

impl EncodeFast for u16

Source§

impl EncodeFast for u32

Source§

unsafe fn decode_and_append_fast_at_offset( buffer: *const u8, offset: usize, output: &mut Vec<u8>, )

Source§

impl EncodeFast for u64

Source§

unsafe fn decode_and_append_fast_at_offset( buffer: *const u8, offset: usize, output: &mut Vec<u8>, )

Source§

impl EncodeFast for usize

Source§

unsafe fn decode_and_append_fast_at_offset( buffer: *const u8, offset: usize, output: &mut Vec<u8>, )

Source§

impl EncodeFast for String

Implementors§