pub trait Encoder: Sized {
    const SPECIALIZES_BYTES: bool = false;

    // Required methods
    fn write_sized<F: FnOnce(&mut [u8])>(&mut self, len: usize, write: F);
    fn write_slice(&mut self, slice: &[u8]);
    fn write_zerocopy<T: AsBytes + FromBytes + Unaligned, F: FnOnce(&mut T)>(
        &mut self,
        write: F
    );
    fn write_repeated(&mut self, count: usize, value: u8);
    fn capacity(&self) -> usize;
    fn len(&self) -> usize;

    // Provided methods
    fn encode<T: EncoderValue>(&mut self, value: &T) { ... }
    fn encode_with_len_prefix<Len: TryFrom<usize> + EncoderValue, T: EncoderValue>(
        &mut self,
        value: &T
    )
       where Len::Error: Debug { ... }
    fn write_bytes(&mut self, bytes: Bytes) { ... }
    fn is_empty(&self) -> bool { ... }
    fn remaining_capacity(&self) -> usize { ... }
}

Provided Associated Constants§

source

const SPECIALIZES_BYTES: bool = false

Set to true if the particular encoder specializes on the bytes implementation

Required Methods§

source

fn write_sized<F: FnOnce(&mut [u8])>(&mut self, len: usize, write: F)

Calls write with a slice of len bytes at the current write position

source

fn write_slice(&mut self, slice: &[u8])

Copies the slice into the buffer

source

fn write_zerocopy<T: AsBytes + FromBytes + Unaligned, F: FnOnce(&mut T)>( &mut self, write: F )

Writes a zerocopy value to the buffer

source

fn write_repeated(&mut self, count: usize, value: u8)

Repeatedly write a byte value for a given count

let mut buffer = vec![255; 1024];
let mut encoder = EncoderBuffer::new(&mut buffer);
encoder.encode(&1u8);
encoder.write_repeated(4, 0);
assert_eq!(&buffer[0..6], &[1, 0, 0, 0, 0, 255]);
source

fn capacity(&self) -> usize

Returns the total buffer capacity

source

fn len(&self) -> usize

Returns the number of bytes written to the buffer

Provided Methods§

source

fn encode<T: EncoderValue>(&mut self, value: &T)

Encode the given EncoderValue into the buffer

source

fn encode_with_len_prefix<Len: TryFrom<usize> + EncoderValue, T: EncoderValue>( &mut self, value: &T )where Len::Error: Debug,

Encode the given EncoderValue into the buffer with a prefix of Len

source

fn write_bytes(&mut self, bytes: Bytes)

source

fn is_empty(&self) -> bool

Returns true if no bytes have been written

source

fn remaining_capacity(&self) -> usize

Returns the number of available bytes in the buffer

Implementors§