pub struct DecodeWriter<W: Write, const N: usize> { /* private fields */ }Expand description
A buffered writer that decodes encoded bytes before writing them to an inner writer.
This writer buffers encoded characters, decodes them using the specified
Encoding<N>, and writes the decoded output to the wrapped writer. It
implements io::Write, allowing transparent decoding of data streams.
Only complete encoding groups are decoded during normal writes. Incomplete groups are kept in the buffer until flush is called, at which point they are decoded (potentially with padding handling for base64/base32).
§Examples
use std::io::Write;
use omp_core::encoding::{DecodeWriter, base64};
let mut output = Vec::new();
let mut writer = base64::decode_writer(&mut output);
writer.write_all(b"SGVsbG8sIFdvcmxkIQ==").unwrap();
writer.flush().unwrap();
drop(writer);
assert_eq!(output, b"Hello, World!");Implementations§
Source§impl<W: Write, const N: usize> DecodeWriter<W, N>
impl<W: Write, const N: usize> DecodeWriter<W, N>
Trait Implementations§
Source§impl<W: Write, const N: usize> Write for DecodeWriter<W, N>
impl<W: Write, const N: usize> Write for DecodeWriter<W, N>
Source§fn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
Writes a buffer into this writer, returning how many bytes were written. Read more
Source§fn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
Flushes this output stream, ensuring that all intermediately buffered
contents reach their destination. Read more
Source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
🔬This is a nightly-only experimental API. (
can_vector)1.0.0 · Source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Attempts to write an entire buffer into this writer. Read more
Source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
write_all_vectored)Attempts to write multiple buffers into this writer. Read more
Auto Trait Implementations§
impl<W, const N: usize> Freeze for DecodeWriter<W, N>where
W: Freeze,
impl<W, const N: usize> RefUnwindSafe for DecodeWriter<W, N>where
W: RefUnwindSafe,
impl<W, const N: usize> Send for DecodeWriter<W, N>where
W: Send,
impl<W, const N: usize> Sync for DecodeWriter<W, N>where
W: Sync,
impl<W, const N: usize> Unpin for DecodeWriter<W, N>where
W: Unpin,
impl<W, const N: usize> UnsafeUnpin for DecodeWriter<W, N>where
W: UnsafeUnpin,
impl<W, const N: usize> UnwindSafe for DecodeWriter<W, N>where
W: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more