W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
ch12-00-an-io-project.md
commit db919bc6bb9071566e9c4f05053672133eaac33e
本章既是一個(gè)目前所學(xué)的很多技能的概括,也是一個(gè)更多標(biāo)準(zhǔn)庫功能的探索。我們將構(gòu)建一個(gè)與文件和命令行輸入/輸出交互的命令行工具來練習(xí)現(xiàn)在一些你已經(jīng)掌握的 Rust 技能。
Rust 的運(yùn)行速度、安全性、單二進(jìn)制文件輸出和跨平臺(tái)支持使其成為創(chuàng)建命令行程序的絕佳選擇,所以我們的項(xiàng)目將創(chuàng)建一個(gè)我們自己版本的經(jīng)典命令行工具:grep
。grep 是 “Globally search a Regular Expression and Print.” 的首字母縮寫。grep
最簡(jiǎn)單的使用場(chǎng)景是在特定文件中搜索指定字符串。為此,grep
獲取一個(gè)文件名和一個(gè)字符串作為參數(shù),接著讀取文件并找到其中包含字符串參數(shù)的行,然后打印出這些行。
在這個(gè)過程中,我們會(huì)展示如何讓我們的命令行工具利用很多命令行工具中用到的終端功能。讀取環(huán)境變量來使得用戶可以配置工具的行為。打印到標(biāo)準(zhǔn)錯(cuò)誤控制流(stderr
) 而不是標(biāo)準(zhǔn)輸出(stdout
),例如這樣用戶可以選擇將成功輸出重定向到文件中的同時(shí)仍然在屏幕上顯示錯(cuò)誤信息。
一位 Rust 社區(qū)的成員,Andrew Gallant,已經(jīng)創(chuàng)建了一個(gè)功能完整且非??焖俚?nbsp;grep
版本,叫做 ripgrep
。相比之下,我們的 grep
版本將非常簡(jiǎn)單,本章將教會(huì)你一些幫助理解像 ripgrep
這樣真實(shí)項(xiàng)目的背景知識(shí)。
我們的 grep
項(xiàng)目將會(huì)結(jié)合之前所學(xué)的一些內(nèi)容:
另外還會(huì)簡(jiǎn)要的講到閉包、迭代器和 trait 對(duì)象,他們分別會(huì)在 第十三章 和 第十七章 中詳細(xì)介紹。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: