Struct rcobs::Encoder[][src]

pub struct Encoder<W: Write> { /* fields omitted */ }

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

impl<W: Write> Encoder<W>[src]

pub fn new(w: W) -> Self[src]

Create a new encoder with the given writer.

pub fn writer(&mut self) -> &mut W[src]

Mutably borrow the inner writer.

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

Write a message byte.

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

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

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.