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.
use std::io::Write;
let mut wrapped_writer = Vec::new();
{
let mut enc = base64::write::EncoderWriter::new(
&mut wrapped_writer, base64::STANDARD);
enc.write_all(b"asdf").unwrap();
enc.finish().unwrap();
}
assert_eq!(b"YXNkZg==", &wrapped_writer[..]);
Calling write()
after finish()
is invalid and will panic.
Base64 encoding itself does not generate errors, but errors from the wrapped writer will be
returned as per the contract of Write
.
It has some minor performance loss compared to encoding slices (a couple percent).
It does not do any heap allocation.
Create a new encoder that will write to the provided delegate writer w
.
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.
The first error that is not of ErrorKind::Interrupted
will be returned.
Executes the destructor for this type. Read more
Formats the value using the given formatter. Read more
Encode input and then write to the delegate writer.
Under non-error circumstances, this returns Ok
with the value being the number of bytes
of input
consumed. The value may be 0
, which interacts poorly with write_all
, which
interprets Ok(0)
as an error, despite it being allowed by the contract of write
. See
https://github.com/rust-lang/rust/issues/56889 for more on that.
If the previous call to write
provided more (encoded) data than the delegate writer could
accept in a single call to its write
, the remaining data is buffered. As long as buffered
data is present, subsequent calls to write
will try to write the remaining buffered data
to the delegate and return either Ok(0)
-- and therefore not consume any of input
-- or
an error.
Any errors emitted by the delegate writer are returned.
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 writer. 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
type Error = !
🔬 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
)
Immutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
type Error = <U as TryFrom<T>>::Error
🔬 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
)
Mutably borrows from an owned value. Read more
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 128 bit integer to the underlying writer.
Writes a signed 128 bit integer to the underlying writer.
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 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