cts_csv/csv/
read.rs

1use serde::de::DeserializeOwned;
2
3/// 读取csv数据,解析成结构体
4/// @param path - csv文件路径
5/// @param has_header - 是否有表头
6/// @return 结果向量
7pub fn read<D>(path: &str, has_header: bool) -> Result<Vec<D>, std::io::Error>
8where
9    D: DeserializeOwned,
10{
11    // 初始化结果向量
12    let mut result = Vec::new();
13    // 初始化csv读取器
14    let mut rdr = csv::ReaderBuilder::new()
15        .has_headers(has_header)
16        .from_path(path)?;
17    // 初始化索引
18    let mut index = 0;
19    for row in rdr.deserialize() {
20        let row: D = row?;
21        index = index + 1;
22        println!("读取csv第{}行数据", index);
23        result.push(row);
24    }
25
26    Ok(result)
27}