pub struct Decoder<'i, E: Variant> { /* private fields */ }
Expand description
Stateful Base64 decoder with support for buffered, incremental decoding.
The E
type parameter can be any type which impls Encoding
such as
Base64
or Base64Unpadded
.
Internally it uses a sealed Variant
trait which is an implementation
detail of this crate, and leverages a blanket impl of Encoding
.
Implementations
sourceimpl<'i, E: Variant> Decoder<'i, E>
impl<'i, E: Variant> Decoder<'i, E>
sourcepub fn new(input: &'i [u8]) -> Result<Self, Error>
pub fn new(input: &'i [u8]) -> Result<Self, Error>
Create a new decoder for a byte slice containing contiguous (non-newline-delimited) Base64-encoded data.
Returns
Ok(decoder)
on success.Err(Error::InvalidLength)
if the input buffer is empty.
sourcepub fn new_wrapped(input: &'i [u8], line_width: usize) -> Result<Self, Error>
pub fn new_wrapped(input: &'i [u8], line_width: usize) -> Result<Self, Error>
Create a new decoder for a byte slice containing Base64 which line wraps at the given line length.
Trailing newlines are not supported and must be removed in advance.
Newlines are handled according to what are roughly RFC7468 conventions:
[parsers] MUST handle different newline conventions
RFC7468 allows any of the following as newlines, and allows a mixture of different types of newlines:
eol = CRLF / CR / LF
Returns
Ok(decoder)
on success.Err(Error::InvalidLength)
if the input buffer is empty or the line width is zero.
sourcepub fn decode<'o>(&mut self, out: &'o mut [u8]) -> Result<&'o [u8], Error>
pub fn decode<'o>(&mut self, out: &'o mut [u8]) -> Result<&'o [u8], Error>
Fill the provided buffer with data decoded from Base64.
Enough Base64 input data must remain to fill the entire buffer.
Returns
Ok(bytes)
if the expected amount of data was readErr(Error::InvalidLength)
if the exact amount of data couldn’t be read
sourcepub fn decode_to_end<'o>(
&mut self,
buf: &'o mut Vec<u8>
) -> Result<&'o [u8], Error>
This is supported on crate feature alloc
only.
pub fn decode_to_end<'o>(
&mut self,
buf: &'o mut Vec<u8>
) -> Result<&'o [u8], Error>
alloc
only.Decode all remaining Base64 data, placing the result into buf
.
If successful, this function will return the total number of bytes
decoded into buf
.
sourcepub fn decoded_len(&self) -> usize
pub fn decoded_len(&self) -> usize
Get the length of the remaining data after Base64 decoding.
Decreases every time data is decoded.
sourcepub fn is_finished(&self) -> bool
pub fn is_finished(&self) -> bool
Has all of the input data been decoded?
Trait Implementations
sourceimpl<'i, E: Variant> Read for Decoder<'i, E>
This is supported on crate feature std
only.
impl<'i, E: Variant> Read for Decoder<'i, E>
std
only.sourcefn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
sourcefn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize>
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize>
Read all bytes until EOF in this source, placing them into buf
. Read more
sourcefn read_exact(&mut self, buf: &mut [u8]) -> Result<()>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<()>
Read the exact number of bytes required to fill buf
. Read more
1.36.0 · sourcefn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
Like read
, except that it reads into a slice of buffers. Read more
sourcefn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
can_vector
)Determines if this Read
er has an efficient read_vectored
implementation. Read more
1.0.0 · sourcefn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
Read all bytes until EOF in this source, appending them to buf
. Read more
sourcefn read_buf(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
read_buf
)Pull some bytes from this source into the specified buffer. Read more
sourcefn read_buf_exact(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
read_buf
)Read the exact number of bytes required to fill buf
. Read more
1.0.0 · sourcefn by_ref(&mut self) -> &mut Self
fn by_ref(&mut self) -> &mut Self
Creates a “by reference” adaptor for this instance of Read
. Read more
Auto Trait Implementations
impl<'i, E> RefUnwindSafe for Decoder<'i, E> where
E: RefUnwindSafe,
impl<'i, E> Send for Decoder<'i, E>
impl<'i, E> Sync for Decoder<'i, E>
impl<'i, E> Unpin for Decoder<'i, E> where
E: Unpin,
impl<'i, E> UnwindSafe for Decoder<'i, E> where
E: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more