summaryrefslogtreecommitdiffstats
path: root/src/reader.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/reader.rs')
-rw-r--r--src/reader.rs23
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()
+ }
+}