diff options
Diffstat (limited to 'src/reader.rs')
-rw-r--r-- | src/reader.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/reader.rs b/src/reader.rs new file mode 100644 index 0000000..b90097c --- /dev/null +++ b/src/reader.rs @@ -0,0 +1,23 @@ +use std::io::{self, prelude::*}; + +pub struct BufReader<R> { + reader: io::BufReader<R>, +} + +impl<R: Read> BufReader<R> { + pub fn new(f: R) -> Self { + Self { reader: io::BufReader::new(f) } + } + + pub fn read_line<'buf>( + &mut self, + buffer: &'buf mut String, + ) -> Option<io::Result<&'buf mut String>> { + buffer.clear(); + + self.reader + .read_line(buffer) + .map(|u| if u == 0 { None } else { Some(buffer) }) + .transpose() + } +} |