I/O 项目:构建命令行程序


本章回顾了您到目前为止学到的许多技能,并探索了更多标准库功能。我们将构建一个与文件和命令行输入/输出交互的命令行工具,以练习你现在掌握的一些 Rust 概念。


Rust 的速度、安全性、单二进制输出和跨平台支持使其成为创建命令行工具的理想语言,因此在我们的项目中,我们将制作我们自己的经典命令行搜索工具 grep 版本 (Globally search a regular expression and print).在最简单的用例中,grep 在指定文件中搜索指定字符串。为此,grep 将文件路径和字符串作为其参数。然后,它读取文件,在该文件中查找包含 string 参数的行,并打印这些行。


在此过程中,我们将展示如何使命令行工具使用许多其他命令行工具使用的终端功能。我们将读取环境变量的值,以允许用户配置我们工具的行为。我们还会将错误消息打印到标准错误控制台流 (stderr) 而不是标准输出 (stdout),以便用户可以将成功的输出重定向到文件,同时仍在屏幕上看到错误消息。


Rust 社区成员 Andrew Gallant 已经创建了一个功能齐全、非常快速的 grep 版本,称为 ripgrep。相比之下,我们的 版本将相当简单,但本章将为您提供一些 了解实际项目所需的背景知识,例如 ripgrep


我们的 grep 项目将结合您到目前为止学到的许多概念:


我们还将简要介绍闭包、迭代器和 trait 对象,它们 第 13 章第 17 章将详细介绍。