[][src]Struct base64::write::EncoderWriter

pub struct EncoderWriter<'a, W: 'a + Write> { /* fields omitted */ }

A Write implementation that base64 encodes data before delegating to the wrapped writer.

Because base64 has special handling for the end of the input data (padding, etc), there's a finish() method on this type that encodes any leftover input bytes and adds padding if appropriate. It's called automatically when deallocated (see the Drop implementation), but any error that occurs when invoking the underlying writer will be suppressed. If you want to handle such errors, call finish() yourself.

Examples

use std::io::Write;

// use a vec as the simplest possible `Write` -- in real code this is probably a file, etc.
let mut wrapped_writer = Vec::new();
{
    let mut enc = base64::write::EncoderWriter::new(
        &mut wrapped_writer, base64::STANDARD);

    // handle errors as you normally would
    enc.write_all(b"asdf").unwrap();
    // could leave this out to be called by Drop, if you don't care
    // about handling errors
    enc.finish().unwrap();

}

// base64 was written to the writer
assert_eq!(b"YXNkZg==", &wrapped_writer[..]);

Panics

Calling write() after finish() is invalid and will panic.

Errors

Base64 encoding itself does not generate errors, but errors from the wrapped writer will be returned as per the contract of Write.

Performance

It has some minor performance loss compared to encoding slices (a couple percent). It does not do any heap allocation.

Methods

impl<'a, W: Write> EncoderWriter<'a, W>
[src]

Important traits for EncoderWriter<'a, W>

Create a new encoder around an existing writer.

Encode all remaining buffered data and write it, including any trailing incomplete input triples and associated padding.

Once this succeeds, no further writes can be performed, as that would produce invalid base64.

Errors

Assuming the wrapped writer obeys the Write contract, if this returns Err, no data was written, and finish() may be retried if appropriate for the type of error, etc.

Trait Implementations

impl<'a, W: Write> Debug for EncoderWriter<'a, W>
[src]

Formats the value using the given formatter. Read more

impl<'a, W: Write> Write for EncoderWriter<'a, W>
[src]

Write a buffer into this object, returning how many bytes were written. Read more

Because this is usually treated as OK to call multiple times, it will not flush any incomplete chunks of input or write padding.

Attempts to write an entire buffer into this write. Read more

Writes a formatted string into this writer, returning any error encountered. Read more

Creates a "by reference" adaptor for this instance of Write. Read more

impl<'a, W: Write> Drop for EncoderWriter<'a, W>
[src]

Executes the destructor for this type. Read more

Auto Trait Implementations

impl<'a, W> Send for EncoderWriter<'a, W> where
    W: Send

impl<'a, W> Sync for EncoderWriter<'a, W> where
    W: Sync

Blanket Implementations

impl<T> From for T
[src]

Performs the conversion.

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

Performs the conversion.

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

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

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

Immutably borrows from an owned value. Read more

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

Mutably borrows from an owned value. Read more

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

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

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

🔬 This is a nightly-only experimental API. (get_type_id)

this method will likely be replaced by an associated static

Gets the TypeId of self. Read more

impl<W> WriteBytesExt for W where
    W: Write + ?Sized
[src]

Writes an unsigned 8 bit integer to the underlying writer. Read more

Writes a signed 8 bit integer to the underlying writer. Read more

Writes an unsigned 16 bit integer to the underlying writer. Read more

Writes a signed 16 bit integer to the underlying writer. Read more

Writes an unsigned 24 bit integer to the underlying writer. Read more

Writes a signed 24 bit integer to the underlying writer. Read more

Writes an unsigned 32 bit integer to the underlying writer. Read more

Writes a signed 32 bit integer to the underlying writer. Read more

Writes an unsigned 48 bit integer to the underlying writer. Read more

Writes a signed 48 bit integer to the underlying writer. Read more

Writes an unsigned 64 bit integer to the underlying writer. Read more

Writes a signed 64 bit integer to the underlying writer. Read more

Writes an unsigned n-bytes integer to the underlying writer. Read more

Writes a signed n-bytes integer to the underlying writer. Read more

Writes a IEEE754 single-precision (4 bytes) floating point number to the underlying writer. Read more

Writes a IEEE754 double-precision (8 bytes) floating point number to the underlying writer. Read more