[−][src]Struct base64::write::EncoderWriter
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.
Implementations
impl<'a, W: Write> EncoderWriter<'a, W>
[src][−]
pub fn new(w: &'a mut W, config: Config) -> EncoderWriter<'a, W>ⓘNotable traits for EncoderWriter<'a, W>
impl<'a, W: Write> Write for EncoderWriter<'a, W>
[src][−]
Notable traits for EncoderWriter<'a, W>
impl<'a, W: Write> Write for EncoderWriter<'a, W>
Create a new encoder that will write to the provided delegate writer w
.
pub fn finish(&mut self) -> Result<()>
[src][−]
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.
This may write to the delegate writer multiple times if the delegate writer does not accept all input provided
to its write
each invocation.
Errors
The first error that is not of [ErrorKind::Interrupted
] will be returned.
Trait Implementations
impl<'a, W: Write> Debug for EncoderWriter<'a, W>
[src][+]
impl<'a, W: Write> Drop for EncoderWriter<'a, W>
[src][+]
impl<'a, W: Write> Write for EncoderWriter<'a, W>
[src][+]
Auto Trait Implementations
impl<'a, W> RefUnwindSafe for EncoderWriter<'a, W> where
W: RefUnwindSafe,
W: RefUnwindSafe,
impl<'a, W> Send for EncoderWriter<'a, W> where
W: Send,
W: Send,
impl<'a, W> Sync for EncoderWriter<'a, W> where
W: Sync,
W: Sync,
impl<'a, W> Unpin for EncoderWriter<'a, W>
impl<'a, W> !UnwindSafe for EncoderWriter<'a, W>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src][+]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> From<T> for T
[src][+]
impl<T, U> Into<U> for T where
U: From<T>,
[src][+]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,