org/
util.rs

1//! Utility functions.
2
3use std::fs::File;
4use std::io;
5use std::io::{BufRead, BufReader, Write};
6
7/// Reads a file and returns its contents as lines in Vec<String>.
8/// Each string returned will not have an ending newline.
9pub fn read_file_vec(fname: &str) -> io::Result<Vec<String>> {
10    // Open a file in read-only mode
11    let file = File::open(&fname)?;
12    let reader = BufReader::new(file);
13    let mut vec: Vec<String> = Vec::new();
14
15    // Add each line to the output Vec
16    for line in reader.lines() {
17        match line {
18            Ok(line) => vec.push(line),
19            Err(e) => return Err(e),
20        }
21    }
22
23    Ok(vec)
24}
25
26/// Writes a `contents` to a file with a given path.
27pub fn write_file_vec(fname: &str, contents: &[String], line_ending: &[u8]) -> io::Result<()> {
28    // Open a file in write-only mode, returns `io::Result<File>`
29    let mut file = File::create(&fname)?;
30
31    // Write each string to `file`, returns `io::Result<()>`
32    for line in contents {
33        file.write_all(line.as_bytes())?;
34        file.write_all(line_ending)?;
35    }
36
37    Ok(())
38}