31 lines
826 B
Rust
31 lines
826 B
Rust
use std::env;
|
|
use std::fs::File;
|
|
use std::io::Read;
|
|
|
|
pub type Result<T> = std::result::Result<T, Box<dyn std::error::Error>>;
|
|
|
|
pub fn read_file() -> Result<Vec<(usize, usize, char, String)>> {
|
|
let path = env::args().skip(1).next().unwrap();
|
|
let mut file = File::open(path)?;
|
|
let mut content = String::new();
|
|
file.read_to_string(&mut content)?;
|
|
|
|
let result = content
|
|
.lines()
|
|
.map(|line| {
|
|
let tokens = line
|
|
.split(&[' ', ':', '-'][..])
|
|
.filter(|&x| x != "")
|
|
.collect::<Vec<_>>();
|
|
(
|
|
tokens[0].parse().unwrap(),
|
|
tokens[1].parse().unwrap(),
|
|
tokens[2].chars().next().unwrap(),
|
|
tokens[3].into(),
|
|
)
|
|
})
|
|
.collect();
|
|
|
|
Ok(result)
|
|
}
|