ju_tcs_rust_23_28/
lib.rs

1use std::fs;
2use std::fs::File;
3use std::io::{BufRead, BufReader};
4use std::path::Path;
5
6pub fn head(path: &Path, n: usize) -> Vec<String>{
7    let mut ans: Vec<String> = Vec::new();
8    let file = File::open(path);
9    if(file.is_err()){
10        panic!("Invalid Path");
11    }
12    else {
13        let reader = BufReader::new(file.unwrap());
14        let mut number = 0;
15        for line in reader.lines() {
16            if (number >= n) {
17                break
18            }
19            if (line.is_err()) {
20                panic!("not enough lines");
21            }
22            else {
23                ans.push(line.unwrap());
24                number += 1;
25            }
26        }
27    }
28
29    return ans;
30}
31
32
33pub fn tail(path: &Path, n: usize) -> Vec<String>{
34    let mut ans: Vec<String> = Vec::new();
35    let file = File::open(path);
36    if(file.is_err()){
37        panic!("Unwalid Path");
38    }
39    else {
40        let reader = BufReader::new(file.unwrap());
41        let mut number = 0;
42        let vec:Vec<String> = reader.lines().map(|l| l.unwrap()).collect();
43        let number = vec.len() - n;
44        let res = &vec[number..];
45        ans = Vec::from(res.clone());
46    }
47
48    return ans;
49}