Rust 一個 I/O 項目:構(gòu)建一個命令行程序

2023-03-22 15:06 更新
ch12-00-an-io-project.md
commit db919bc6bb9071566e9c4f05053672133eaac33e

本章既是一個目前所學(xué)的很多技能的概括,也是一個更多標(biāo)準(zhǔn)庫功能的探索。我們將構(gòu)建一個與文件和命令行輸入/輸出交互的命令行工具來練習(xí)現(xiàn)在一些你已經(jīng)掌握的 Rust 技能。

Rust 的運行速度、安全性、單二進制文件輸出和跨平臺支持使其成為創(chuàng)建命令行程序的絕佳選擇,所以我們的項目將創(chuàng)建一個我們自己版本的經(jīng)典命令行工具:grep。grep 是 “Globally search a Regular Expression and Print.” 的首字母縮寫。grep 最簡單的使用場景是在特定文件中搜索指定字符串。為此,grep 獲取一個文件名和一個字符串作為參數(shù),接著讀取文件并找到其中包含字符串參數(shù)的行,然后打印出這些行。

在這個過程中,我們會展示如何讓我們的命令行工具利用很多命令行工具中用到的終端功能。讀取環(huán)境變量來使得用戶可以配置工具的行為。打印到標(biāo)準(zhǔn)錯誤控制流(stderr) 而不是標(biāo)準(zhǔn)輸出(stdout),例如這樣用戶可以選擇將成功輸出重定向到文件中的同時仍然在屏幕上顯示錯誤信息。

一位 Rust 社區(qū)的成員,Andrew Gallant,已經(jīng)創(chuàng)建了一個功能完整且非常快速的 grep 版本,叫做 ripgrep。相比之下,我們的 grep 版本將非常簡單,本章將教會你一些幫助理解像 ripgrep 這樣真實項目的背景知識。

我們的 grep 項目將會結(jié)合之前所學(xué)的一些內(nèi)容:

另外還會簡要的講到閉包、迭代器和 trait 對象,他們分別會在 第十三章 和 第十七章 中詳細(xì)介紹。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號