rsv_lib/csv_lib/
head.rs

1use crate::args::Head;
2use crate::utils::return_result::{CliResultData, ResultData};
3use std::fs::File;
4use std::io::{BufRead, BufReader};
5
6impl Head {
7    #[allow(dead_code)]
8    pub fn csv_run_lib(&self) -> CliResultData {
9        let mut out = ResultData::new();
10        let path = self.path();
11
12        // show head n
13        let mut lines = BufReader::new(File::open(path)?)
14            .lines()
15            .take(self.n + 1 - self.no_header as usize);
16
17        // Process header
18        if let Some(header) = lines.next() {
19            if let Ok(h) = header {
20                let h = self.split_row_to_owned_vec(&h);
21                out.insert_header(h);
22            }
23        }
24
25        lines.for_each(|r| {
26            if let Ok(r) = r {
27                let r = self.split_row_to_owned_vec(&r);
28                out.insert_record(r);
29            }
30        });
31
32        Ok(Some(out))
33    }
34}