rcobs

Struct Encoder

Source
pub struct Encoder<W: Write> { /* private fields */ }
Expand description

Streaming encoder

Allows encoding of reverse-COBS messages in a streaming fashion, with almost no memory usage (internal state is just one single byte!).

To encode a message, call write for each byte in the message, then call end.

You may use the same Encoder instance to encode multiple messages. In this case, you will probably want to separate messages with a 0x00, which you have to write manually after calling end, for example with encoder.writer().write(0).

Implementations§

Source§

impl<W: Write> Encoder<W>

Source

pub fn new(w: W) -> Self

Create a new encoder with the given writer.

Source

pub fn writer(&mut self) -> &mut W

Mutably borrow the inner writer.

Source

pub fn write(&mut self, byte: u8) -> Result<(), W::Error>

Write a message byte.

Source

pub fn end(&mut self) -> Result<(), W::Error>

Finish encoding a message.

This does NOT write a 0x00 separator byte, you must write it yourself if you so desire.

Auto Trait Implementations§

§

impl<W> Freeze for Encoder<W>
where W: Freeze,

§

impl<W> RefUnwindSafe for Encoder<W>
where W: RefUnwindSafe,

§

impl<W> Send for Encoder<W>
where W: Send,

§

impl<W> Sync for Encoder<W>
where W: Sync,

§

impl<W> Unpin for Encoder<W>
where W: Unpin,

§

impl<W> UnwindSafe for Encoder<W>
where W: UnwindSafe,

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>,

Source§

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>,

Source§

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.