ju_tcs_tbop_24_ganacci/
lib.rs1use std::{fs::File, io::{BufRead, BufReader}, path::Path};
2
3fn extract(path: &Path) -> Vec<String> {
4 let file = File::open(path).unwrap();
5 let reader = BufReader::new(file);
6 let mut lines = Vec::new();
7 for line in reader.lines() {
8 lines.push(line.unwrap());
9 }
10 lines
11}
12
13
14pub fn tail(path: &Path, n: usize) -> Vec<String> {
15 let lines = extract(path);
16 let length = lines.len();
17 extract(path)[length-n..length].to_vec()
18}
19pub fn head(path: &Path, n: usize) -> Vec<String> {
20 extract(path)[0..n].to_vec()
21}
22
23#[cfg(test)]
24mod tests {
25 use std::path::Path;
26
27 use crate::{tail, head};
28 #[test]
29 fn test_head() {
30 let file = Path::new("./test_files/simple_file.txt");
31 assert_eq!(head(file, 3), vec!["a", "b", "c"])
32 }
33
34 #[test]
35 fn test_tail() {
36 let file = Path::new("./test_files/simple_file.txt");
37 assert_eq!(tail(file, 3), vec!["f", "g", "h"])
38 }
39}