[−][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.
Methods
impl<'a, W: Write> EncoderWriter<'a, W>
[src]
impl<'a, W: Write> EncoderWriter<'a, W>
ⓘImportant traits for EncoderWriter<'a, W>pub fn new(w: &'a mut W, config: Config) -> EncoderWriter<'a, W>
[src]
pub fn new(w: &'a mut W, config: Config) -> EncoderWriter<'a, W>
Create a new encoder around an existing writer.
pub fn finish(&mut self) -> Result<()>
[src]
pub fn finish(&mut self) -> Result<()>
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]
impl<'a, W: Write> Debug for EncoderWriter<'a, W>
fn fmt(&self, f: &mut Formatter) -> Result
[src]
fn fmt(&self, f: &mut Formatter) -> Result
Formats the value using the given formatter. Read more
impl<'a, W: Write> Write for EncoderWriter<'a, W>
[src]
impl<'a, W: Write> Write for EncoderWriter<'a, W>
fn write(&mut self, input: &[u8]) -> Result<usize>
[src]
fn write(&mut self, input: &[u8]) -> Result<usize>
Write a buffer into this object, returning how many bytes were written. Read more
fn flush(&mut self) -> Result<()>
[src]
fn flush(&mut self) -> Result<()>
Because this is usually treated as OK to call multiple times, it will not flush any incomplete chunks of input or write padding.
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
1.0.0[src]
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Attempts to write an entire buffer into this write. Read more
fn write_fmt(&mut self, fmt: Arguments) -> Result<(), Error>
1.0.0[src]
fn write_fmt(&mut self, fmt: Arguments) -> Result<(), Error>
Writes a formatted string into this writer, returning any error encountered. Read more
fn by_ref(&mut self) -> &mut Self
1.0.0[src]
fn by_ref(&mut self) -> &mut Self
Creates a "by reference" adaptor for this instance of Write
. Read more
impl<'a, W: Write> Drop for EncoderWriter<'a, W>
[src]
impl<'a, W: Write> Drop for EncoderWriter<'a, W>
Auto Trait Implementations
impl<'a, W> Send for EncoderWriter<'a, W> where
W: Send,
impl<'a, W> Send for EncoderWriter<'a, W> where
W: Send,
impl<'a, W> Sync for EncoderWriter<'a, W> where
W: Sync,
impl<'a, W> Sync for EncoderWriter<'a, W> where
W: Sync,
Blanket Implementations
impl<T> From for T
[src]
impl<T> From for T
impl<T, U> Into for T where
U: From<T>,
[src]
impl<T, U> Into for T where
U: From<T>,
impl<T, U> TryFrom for T where
T: From<U>,
[src]
impl<T, U> TryFrom for T where
T: From<U>,
type Error = !
try_from
)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
try_from
)Performs the conversion.
impl<T> Borrow for T where
T: ?Sized,
[src]
impl<T> Borrow for T where
T: ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
impl<T> BorrowMut for T where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
try_from
)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
try_from
)Performs the conversion.
impl<T> Any for T where
T: 'static + ?Sized,
[src]
impl<T> Any for T where
T: 'static + ?Sized,
fn get_type_id(&self) -> TypeId
[src]
fn get_type_id(&self) -> TypeId
🔬 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]
impl<W> WriteBytesExt for W where
W: Write + ?Sized,
fn write_u8(&mut self, n: u8) -> Result<(), Error>
[src]
fn write_u8(&mut self, n: u8) -> Result<(), Error>
Writes an unsigned 8 bit integer to the underlying writer. Read more
fn write_i8(&mut self, n: i8) -> Result<(), Error>
[src]
fn write_i8(&mut self, n: i8) -> Result<(), Error>
Writes a signed 8 bit integer to the underlying writer. Read more
fn write_u16<T>(&mut self, n: u16) -> Result<(), Error> where
T: ByteOrder,
[src]
fn write_u16<T>(&mut self, n: u16) -> Result<(), Error> where
T: ByteOrder,
Writes an unsigned 16 bit integer to the underlying writer. Read more
fn write_i16<T>(&mut self, n: i16) -> Result<(), Error> where
T: ByteOrder,
[src]
fn write_i16<T>(&mut self, n: i16) -> Result<(), Error> where
T: ByteOrder,
Writes a signed 16 bit integer to the underlying writer. Read more
fn write_u24<T>(&mut self, n: u32) -> Result<(), Error> where
T: ByteOrder,
[src]
fn write_u24<T>(&mut self, n: u32) -> Result<(), Error> where
T: ByteOrder,
Writes an unsigned 24 bit integer to the underlying writer. Read more
fn write_i24<T>(&mut self, n: i32) -> Result<(), Error> where
T: ByteOrder,
[src]
fn write_i24<T>(&mut self, n: i32) -> Result<(), Error> where
T: ByteOrder,
Writes a signed 24 bit integer to the underlying writer. Read more
fn write_u32<T>(&mut self, n: u32) -> Result<(), Error> where
T: ByteOrder,
[src]
fn write_u32<T>(&mut self, n: u32) -> Result<(), Error> where
T: ByteOrder,
Writes an unsigned 32 bit integer to the underlying writer. Read more
fn write_i32<T>(&mut self, n: i32) -> Result<(), Error> where
T: ByteOrder,
[src]
fn write_i32<T>(&mut self, n: i32) -> Result<(), Error> where
T: ByteOrder,
Writes a signed 32 bit integer to the underlying writer. Read more
fn write_u48<T>(&mut self, n: u64) -> Result<(), Error> where
T: ByteOrder,
[src]
fn write_u48<T>(&mut self, n: u64) -> Result<(), Error> where
T: ByteOrder,
Writes an unsigned 48 bit integer to the underlying writer. Read more
fn write_i48<T>(&mut self, n: i64) -> Result<(), Error> where
T: ByteOrder,
[src]
fn write_i48<T>(&mut self, n: i64) -> Result<(), Error> where
T: ByteOrder,
Writes a signed 48 bit integer to the underlying writer. Read more
fn write_u64<T>(&mut self, n: u64) -> Result<(), Error> where
T: ByteOrder,
[src]
fn write_u64<T>(&mut self, n: u64) -> Result<(), Error> where
T: ByteOrder,
Writes an unsigned 64 bit integer to the underlying writer. Read more
fn write_i64<T>(&mut self, n: i64) -> Result<(), Error> where
T: ByteOrder,
[src]
fn write_i64<T>(&mut self, n: i64) -> Result<(), Error> where
T: ByteOrder,
Writes a signed 64 bit integer to the underlying writer. Read more
fn write_uint<T>(&mut self, n: u64, nbytes: usize) -> Result<(), Error> where
T: ByteOrder,
[src]
fn write_uint<T>(&mut self, n: u64, nbytes: usize) -> Result<(), Error> where
T: ByteOrder,
Writes an unsigned n-bytes integer to the underlying writer. Read more
fn write_int<T>(&mut self, n: i64, nbytes: usize) -> Result<(), Error> where
T: ByteOrder,
[src]
fn write_int<T>(&mut self, n: i64, nbytes: usize) -> Result<(), Error> where
T: ByteOrder,
Writes a signed n-bytes integer to the underlying writer. Read more
fn write_f32<T>(&mut self, n: f32) -> Result<(), Error> where
T: ByteOrder,
[src]
fn write_f32<T>(&mut self, n: f32) -> Result<(), Error> where
T: ByteOrder,
Writes a IEEE754 single-precision (4 bytes) floating point number to the underlying writer. Read more
fn write_f64<T>(&mut self, n: f64) -> Result<(), Error> where
T: ByteOrder,
[src]
fn write_f64<T>(&mut self, n: f64) -> Result<(), Error> where
T: ByteOrder,
Writes a IEEE754 double-precision (8 bytes) floating point number to the underlying writer. Read more