diff --git a/src/encoding.rs b/src/encoding.rs index 2dc3b378..a2d3e321 100644 --- a/src/encoding.rs +++ b/src/encoding.rs @@ -233,8 +233,7 @@ impl EncodingRef { } #[cfg(feature = "encoding")] - -struct DecodingBufReader { +pub(crate) struct DecodingBufReader { // { // // The buffer // buffer: String, // // How many bytes in the buffer currently hold significant data. @@ -243,7 +242,7 @@ struct DecodingBufReader { // /// Track whether we see errors. // encoding: Option, - inner: R, + // inner: R, decoded_buffer: Vec, current_pos: usize, @@ -251,36 +250,37 @@ struct DecodingBufReader { encoding: EncodingRef, } -#[cfg(feature = "encoding")] -impl BufRead for DecodingBufReader { - fn fill_buf(&mut self) -> io::Result<&[u8]> { - self.shuffle(); - let data = self.inner.fill_buf()?; +// #[cfg(feature = "encoding")] +// impl BufRead for DecodingBufReader { +// fn fill_buf(&mut self) -> io::Result<&[u8]> { +// self.shuffle(); +// let data = self.inner.fill_buf()?; - let amount_read_from_inner = self.feed(data)?; - self.inner.consume(amount_read_from_inner); +// let amount_read_from_inner = self.feed(data)?; +// self.inner.consume(amount_read_from_inner); - Ok(data) - } +// Ok(data) +// } - fn consume(&mut self, amt: usize) { - self.current_pos = std::cmp::min(self.current_pos + amt, self.decoded_buffer.capacity()); - } -} +// fn consume(&mut self, amt: usize) { +// self.current_pos = std::cmp::min(self.current_pos + amt, self.decoded_buffer.capacity()); +// } +// } -#[cfg(feature = "encoding")] -impl Read for DecodingBufReader { - fn read(&mut self, buf: &mut [u8]) -> io::Result { - self.inner.read(buf) - } -} +// #[cfg(feature = "encoding")] +// impl Read for DecodingBufReader { +// fn read(&mut self, buf: &mut [u8]) -> io::Result { +// self.inner.read(buf) +// } +// } #[cfg(feature = "encoding")] -impl DecodingBufReader { - fn new(inner: R) -> Self { +// impl DecodingBufReader { +impl DecodingBufReader { + fn new() -> Self { DecodingBufReader { - inner: inner, + // inner: inner, decoded_buffer: Vec::new(), current_pos: 0, @@ -289,8 +289,12 @@ impl DecodingBufReader { } } - fn get_raw_buffer(&mut self) -> io::Result<&[u8]> { - self.inner.fill_buf() + // fn get_raw_buffer(&mut self) -> io::Result<&[u8]> { + // self.inner.fill_buf() + // } + + fn buffer(&self) -> &[u8] { + &self.decoded_buffer } /// Move unconsumed data to the front of the buffer and reset the length @@ -342,7 +346,15 @@ impl DecodingBufReader { #[cfg(test)] mod tests { + #[cfg(feature = "encoding")] + #[test] + fn basic() { + use super::DecodingBufReader; + let mut reader = DecodingBufReader::new(); + reader.feed(b"mary had a little lamb").unwrap(); + panic!("{:?}", reader.decoded_buffer); + } }