pub struct Buffer<'a> { /* private fields */ }

Implementations§

source§

impl<'a> Buffer<'a>

source

pub fn flatten(&mut self) -> &mut EncoderBuffer<'a>

Ensures an extra bytes are written into the main EncoderBuffer.

source§

impl<'a> Buffer<'a>

Implement a version with bytes enabled

source

pub fn new(inner: EncoderBuffer<'a>) -> Self

Initializes a buffer without any extra bytes at the end

source

pub fn new_with_extra(inner: EncoderBuffer<'a>, extra: Option<Bytes>) -> Self

Initializes the buffer with extra bytes

NOTE the EncoderBuffer position should not include the extra bytes. This ensures the bytes can be “flushed” into the EncoderBuffer if another write happens or flatten is called.

source

pub fn into_inner(self) -> (EncoderBuffer<'a>, Option<Bytes>)

Converts the buffer into its inner parts

NOTE: the EncoderBuffer position will not include the extra bytes. The caller will need to account for this data.

source

pub fn inner_mut(&mut self) -> (&mut EncoderBuffer<'a>, &Option<Bytes>)

Returns the inner EncoderBuffer, along with the current extra bytes

source

pub fn clear(&mut self)

Resets the encoder to its initial state while also dropping any extra bytes at the end

Trait Implementations§

source§

impl<'a> Encoder for Buffer<'a>

source§

const SPECIALIZES_BYTES: bool = true

We have special handling for writes that include Bytes so signal that

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_bytes(&mut self, bytes: Bytes)

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 Read more
source§

fn capacity(&self) -> usize

Returns the total buffer capacity
source§

fn len(&self) -> usize

Returns the number of bytes written to the buffer
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 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

Auto Trait Implementations§

§

impl<'a> !Freeze for Buffer<'a>

§

impl<'a> RefUnwindSafe for Buffer<'a>

§

impl<'a> Send for Buffer<'a>

§

impl<'a> Sync for Buffer<'a>

§

impl<'a> Unpin for Buffer<'a>

§

impl<'a> !UnwindSafe for Buffer<'a>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.