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}