1use crate::{Result, RwBuilder};
2
3#[derive(Debug)]
5pub struct Base64Builder<B> {
6 builder: B,
8}
9
10impl<B: RwBuilder> Base64Builder<B> {
11 pub const fn new(builder: B) -> Self {
13 Self { builder }
14 }
15}
16
17impl<B: RwBuilder> RwBuilder for Base64Builder<B> {
18 type Reader = base64::read::DecoderReader<'static, base64::engine::GeneralPurpose, B::Reader>;
19 type Writer = base64::write::EncoderWriter<'static, base64::engine::GeneralPurpose, B::Writer>;
20
21 fn reader(&self) -> Result<Self::Reader> {
22 Ok(base64::read::DecoderReader::new(
23 self.builder.reader()?,
24 &base64::engine::general_purpose::STANDARD,
25 ))
26 }
27
28 fn writer(&self) -> Result<Self::Writer> {
29 Ok(base64::write::EncoderWriter::new(
30 self.builder.writer()?,
31 &base64::engine::general_purpose::STANDARD,
32 ))
33 }
34}