//! Enables base64'd output anywhere you might use a `Display` implementation, like a format string. //! //! ``` //! use base64::{display::Base64Display, engine::general_purpose::STANDARD}; //! //! let data = vec![0x0, 0x1, 0x2, 0x3]; //! let wrapper = Base64Display::new(&data, &STANDARD); //! //! assert_eq!("base64: AAECAw==", format!("base64: {}", wrapper)); //! ```
usesuper::chunked_encoder::ChunkedEncoder; usecrate::engine::Engine; use core::fmt::{Display, Formatter}; use core::{fmt, str};
/// A convenience wrapper for base64'ing bytes into a format string without heap allocation. pubstruct Base64Display<'a, 'e, E: Engine> {
bytes: &'a [u8],
chunked_encoder: ChunkedEncoder<'e, E>,
}
impl<'a, 'b: 'a> super::chunked_encoder::Sink for FormatterSink<'a, 'b> { type Error = fmt::Error;
fn write_encoded_bytes(&mutself, encoded: &[u8]) -> Result<(), Self::Error> { // Avoid unsafe. If max performance is needed, write your own display wrapper that uses // unsafe here to gain about 10-15%. self.f
.write_str(str::from_utf8(encoded).expect("base64 data was not utf8"))
}
}
#[cfg(test)] mod tests { usesuper::super::chunked_encoder::tests::{
chunked_encode_matches_normal_encode_random, SinkTestHelper,
}; usesuper::*; usecrate::engine::general_purpose::STANDARD;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.