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

    fn write_sized<F: FnOnce(&mut [u8])>(&mut self, len: usize, write: F);
    fn write_slice(&mut self, slice: &[u8]);
    fn write_repeated(&mut self, count: usize, value: u8);
    fn capacity(&self) -> usize;
    fn len(&self) -> usize;

    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

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

Required Methods

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

Copies the slice into the buffer

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]);

Returns the total buffer capacity

Returns the number of bytes written to the buffer

Provided Methods

Encode the given EncoderValue into the buffer

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

Returns true if no bytes have been written

Returns the number of available bytes in the buffer

Implementors