use std::fs::{self, File};
use std::io::{self, BufRead, BufReader};
pub fn readlines(fname: &str) -> io::Result<Vec<String>> {
let file = File::open(fname)?;
let reader = BufReader::new(file);
let mut lines = Vec::new();
for line in reader.lines() {
let line = line?;
lines.push(line);
}
Ok(lines)
}
pub fn read(fname: &str) -> io::Result<String> {
fs::read_to_string(fname)
}
pub fn open(fname: &str) -> io::Result<BufReader<File>> {
let file = File::open(fname)?;
let reader = BufReader::new(file);
Ok(reader)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn readlines_test1() {
let fname = "Cargo.toml";
let lines = readlines(fname).unwrap();
assert_eq!(lines.is_empty(), false);
}
#[test]
fn read_test1() {
let fname = "Cargo.toml";
let content = read(fname).unwrap();
assert_eq!(content.is_empty(), false);
}
#[test]
fn open_test1() {
let fname = "Cargo.toml";
let f = open(fname).unwrap();
for line in f.lines() {
let line = line.unwrap();
println!("{}", line);
}
}
}