【译】用 Rust 实现 csv 解析-part2

本文是用Rust实现CSV解析的第二部分,主要探讨如何处理读取CSV数据时可能出现的异常,包括基础的异常处理和将不可恢复错误转换为可恢复错误。通过示例展示了如何使用`?`操作符优雅地处理错误,并强调在构建可预测错误时使用`Result`类型的重要性。
摘要由CSDN通过智能技术生成

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() {
        // 一旦发生错误,程序将会以不太友好的方式终止
        // 我们后面会优化这里
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值