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    for row in rdr.deserialize() {
18        let row: D = row?;
19        result.push(row);
20    }
21
22    Ok(result)
23}