- Rust and CSV parsing 译文(用 Rust 实现 csv 解析-part2)
- 原文链接:https://blog.burntsushi.net/csv/
- 原文作者:BurntSushi
- 译文来自:https://github.com/suhanyujie/article-transfer-rs/
- 译者:suhanyujie
- 译者博客:suhanyujie
- ps:水平有限,翻译不当之处,还请指正。
- 标签:Rust,csv
Setup
在这一节中,我们会编写一个简单的程序来读取 CSV 数据并以 debug 的方式打印每条记录。这是基于你已经安装了 Rust 工具链,工具链中包含了 Rust 编译器和 Cargo(包管理工具)。
我们以创建一个新的 Cargo 项目作为开始:
$ cargo new --bin csvtutor
$ cd csvtutor
进入 csvtutor
目录,使用你最喜欢的文本编辑器打开 Cargo.toml
文件,向其中新增 csv = "1"
到你的依赖配置块中。此时,你的 Cargo.toml
文件内容应该如下方所示:
[package]
name = "csvtutor"
version = "0.1.0"
authors = ["Your Name"]
[dependencies]
csv = "1"
接下来,我们构建项目。由于你新增了 csv crate 作为依赖,Cargo 会自动下载并编译它。构建项目使用 Cargo 命令:
$ cargo build
在你的 target/debug
目录下,会产生一个新的二进制文件,csvtutor
。这一点上这个命令不会做太多,但你可以执行这个二进制文件:
$ ./target/debug/csvtutor
Hello, world!
我们可以让程序做一些有用的事情。程序可以从标准输入读取 csv 数据并在标准输出打印每一条记录。要完成这个程序,先用你喜欢的编辑器打开 src/main.rs
,然后用下面的内容替换其中的内容:
// 这可以让你的程序能访问 csv crate
extern crate csv;
// 导入标准库中的 I/O 模块,这样我们可以从标准输入读取内容
use std::io;
// `main` 函数是程序开始执行的地方
fn main() {
// 从标准输入读取数据并创建一个 CSV 解析器
let mut rdr = csv::Reader::from_reader(io::stdin());
// 遍历每一条记录
for result in rdr.records() {
// 一旦发生错误,程序将会以不太友好的方式终止
// 我们后面会优化这里