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}