use std::fs::File;
use std::io::{BufRead, BufReader as Reader, Result};
pub struct BufReader {
reader: Reader<File>,
}
impl BufReader {
pub fn open(path: impl AsRef<std::path::Path>) -> Result<Self> {
let file = File::open(path)?;
let reader = Reader::new(file);
Ok(Self { reader })
}
pub fn read_line<'buf>(
&mut self,
buffer: &'buf mut String,
) -> Option<Result<(&'buf mut String, usize)>> {
buffer.clear();
self.reader
.read_line(buffer)
.map(|u| if u == 0 { None } else { Some((buffer, u)) })
.transpose()
}
}