Change from fmt::Write to io::Write for Encoder

This commit is contained in:
Nathan Fisher 2025-01-09 19:09:15 -05:00
parent beabb1bb0f
commit 26f0e5ed4a
3 changed files with 21 additions and 21 deletions

View File

@ -28,9 +28,9 @@ use {
}; };
fn main() { fn main() {
let mut encoder = Encoder::new("Hello, World!".as_bytes(), String::new(), None, Some(76)); let mut encoder = Encoder::new("Hello, World!".as_bytes(), vec![], None, Some(76));
encoder.encode().unwrap(); encoder.encode().unwrap();
assert_eq!(encoder.output(), "SGVsbG8sIFdvcmxkIQ=="); assert_eq!(encoder.output(), b"SGVsbG8sIFdvcmxkIQ==");
} }
``` ```

View File

@ -12,7 +12,12 @@ pub struct Decoder<R: Read, W: Write> {
} }
impl<R: Read, W: Write> Decoder<R, W> { impl<R: Read, W: Write> Decoder<R, W> {
pub fn new(reader: R, writer: W, alphabet: Option<B64Alphabet>, ignore_whitespace: bool) -> Self { pub fn new(
reader: R,
writer: W,
alphabet: Option<B64Alphabet>,
ignore_whitespace: bool,
) -> Self {
Self { Self {
reader, reader,
writer, writer,

View File

@ -1,9 +1,6 @@
use { use {
crate::{error::Error, B64Alphabet}, crate::{error::Error, B64Alphabet},
std::{ std::io::{ErrorKind, Read, Write},
fmt::Write,
io::{ErrorKind, Read},
},
}; };
/// Encodes arbitraty data as b64 encoded ASCII text /// Encodes arbitraty data as b64 encoded ASCII text
@ -30,6 +27,10 @@ impl<R: Read, W: Write> Encoder<R, W> {
} }
} }
pub fn output(self) -> W {
self.writer
}
#[allow(clippy::needless_range_loop)] #[allow(clippy::needless_range_loop)]
pub fn encode(&mut self) -> Result<(), Error> { pub fn encode(&mut self) -> Result<(), Error> {
let mut total: usize = 0; let mut total: usize = 0;
@ -92,12 +93,6 @@ impl<R: Read, W: Write> Encoder<R, W> {
} }
} }
impl<R: Read> Encoder<R, String> {
pub fn output(self) -> String {
self.writer
}
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
@ -108,20 +103,20 @@ mod tests {
#[test] #[test]
fn encode() { fn encode() {
let mut encoder = Encoder::new("Hello, World".as_bytes(), String::new(), None, None); let mut encoder = Encoder::new("Hello, World".as_bytes(), vec![], None, None);
encoder.encode().unwrap(); encoder.encode().unwrap();
assert_eq!(encoder.output(), "SGVsbG8sIFdvcmxk"); assert_eq!(encoder.writer, "SGVsbG8sIFdvcmxk".as_bytes());
encoder = Encoder { encoder = Encoder {
reader: "Hello, World!".as_bytes(), reader: "Hello, World!".as_bytes(),
writer: String::new(), writer: vec![],
alphabet: B64Alphabet::default(), alphabet: B64Alphabet::default(),
wrap: None, wrap: None,
}; };
encoder.encode().unwrap(); encoder.encode().unwrap();
assert_eq!(encoder.output(), "SGVsbG8sIFdvcmxkIQ=="); assert_eq!(encoder.writer, "SGVsbG8sIFdvcmxkIQ==".as_bytes());
encoder = Encoder::new("Hello, World!\n".as_bytes(), String::new(), None, None); encoder = Encoder::new("Hello, World!\n".as_bytes(), vec![], None, None);
encoder.encode().unwrap(); encoder.encode().unwrap();
assert_eq!(encoder.output(), "SGVsbG8sIFdvcmxkIQo="); assert_eq!(encoder.writer, "SGVsbG8sIFdvcmxkIQo=".as_bytes());
} }
#[test] #[test]
@ -129,8 +124,8 @@ mod tests {
let infile = File::open("src/testdata/lorem.txt").unwrap(); let infile = File::open("src/testdata/lorem.txt").unwrap();
let reader = BufReader::new(infile); let reader = BufReader::new(infile);
let outfile = fs::read_to_string("src/testdata/lorem_b64.txt").unwrap(); let outfile = fs::read_to_string("src/testdata/lorem_b64.txt").unwrap();
let mut encoder = Encoder::new(reader, String::new(), None, Some(76)); let mut encoder = Encoder::new(reader, vec![], None, Some(76));
encoder.encode().unwrap(); encoder.encode().unwrap();
assert_eq!(encoder.output(), outfile); assert_eq!(encoder.writer, outfile.as_bytes());
} }
} }