Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

一個 I/O 專案:打造命令行程式

本章將回顧你目前學到的許多技能,並探索一些標準函式庫的功能。我們會打造一個命令行工具,讓它與檔案及命令行輸入/輸出互動,以練習你已掌握的一些 Rust 概念。

Rust 的速度、安全性、單一可執行檔輸出,以及跨平台支援,使它成為建立命令行工具的理想語言。因此在這個專案中,我們會做出經典命令行搜尋工具 grepglobally search a regular expression and print)的簡化版本。在最簡單的使用情境中,grep 會在指定檔案中搜尋指定字串。為此,grep 會以檔案路徑與字串作為引數,接著讀取檔案,找出包含該字串引數的每一行,並將這些行印出。

在過程中,我們會示範如何讓命令行工具使用其他工具常見的終端機功能。我們會讀取環境變數的值,讓使用者可設定工具的行為。我們也會把錯誤訊息輸出到標準錯誤串流(stderr),而不是標準輸出(stdout),例如讓使用者可以把成功的輸出重新導向到檔案,同時仍能在螢幕上看到錯誤訊息。

Rust 社群成員 Andrew Gallant 已經做出一個功能完整、非常快速的 grep 版本,名為 ripgrep。相較之下,我們的版本會相當簡單,但本章會提供你理解像 ripgrep 這類真實世界專案所需的背景知識。

我們的 grep 專案會結合你至今學過的多項概念:

我們也會簡要介紹閉包、疊代器與特徵物件,而這些內容會在第 13 章第 18 章中詳細說明。