什么是 csv?
csv 是 Rust 语言中用于读写 CSV(逗号分隔值)格式文件的标准库。它提供了一个高性能且灵活的接口来处理表格数据,支持简单和复杂的场景(例如转义、不同分隔符、标题行)。
为什么需要它?
CSV 是应用程序、数据库和电子表格之间进行数据交换最常用的格式之一。csv 库允许:
- 快速加载和处理大型数据集(日志、Excel/Google Sheets 导出、数据库转储)。
- 以易于阅读的格式生成报告和导出文件。
- 将 Rust 应用程序与通过 CSV 工作的系统(例如金融系统、机器学习流水线)集成。
如何安装?
在项目的 Cargo.toml 中添加依赖:
[dependencies]csv = "1.3"通过 cargo build 构建时会自动完成安装。
主要功能
- 读取 — 逐行迭代,自动解析类型。
- 写入 — 从数据结构创建 CSV,支持序列化。
- 配置 — 自定义分隔符(制表符、分号)、转义、压缩。
- 标题行处理 — 按列名访问列。
- 序列化/反序列化 — 与
serde集成,实现结构体的自动转换。
Rust 代码示例
use csv::ReaderBuilder;use serde::Deserialize;use std::error::Error;
#[derive(Debug, Deserialize)]struct Record { name: String, age: u8, city: String,}
fn main() -> Result<(), Box<dyn Error>> { let data = "name,age,cityAlice,30,New YorkBob,25,London"; let mut reader = ReaderBuilder::new() .has_headers(true) .from_reader(data.as_bytes());
for result in reader.deserialize::<Record>() { let record: Record = result?; println!("{:?}", record); } Ok(())}何时使用?
csv 库非常适合以下场景:
- 处理日志、CRM/ERP 的数据导出。
- 创建 ETL 流水线(提取、转换、加载)。
- 为机器学习准备数据。
- 在简单的 CLI 工具中导入/导出配置。
如果你需要高性能和类型安全 —— csv 是 Rust 的最佳选择。