文盤 Rust——起手式,CLI 程序

學習一門計算機語言和學習人類語言有很多共通之處。我們學習人類語言是從單個的詞開始,然後是簡單句子,通過不斷的與他人交互練習掌握語法和語言習慣。當熟練到一定程度就可以表達思想。計算的語言也差不多,熟悉關鍵詞,基本邏輯,標準庫,寫應用。只是溝通的對象是機器而已。

既然是學就不能在開始搞的太難。學習本來就是個艱苦的差事。上來就幹特別複雜的事情往往會堅持不下去。天下難事必做於易,從簡入繁,從易到難,方爲正道。

先聊聊最簡單的 CLI(Command Line Interface) 程序。其實我們每學習一門語言的 hello world 程序就是 CLI,只是沒那麼多交互而已。

做命令行程序最繁瑣的事情是處理交互。交互大體分兩種。一種是我們最熟悉 shell 下的交互模式,每次一個命令,配合參數實現一次處理返回一組結果。這種模式處理起來比較容易 Rust 也有相當優秀的第三方 lib (clap)。第二種是領域交互,就像我是使用 MySql 或者 redis 的客戶端程序。這種程序可以玩兒的東西就比較多了像如何實現交互,如何來做子命令的提示。這些東西 clap 並沒有提供,需要我們自己來實現。

interactcli-rs 是我在工作過程中做的一個交互模式命令行腳手架。實現了一些常用功能。

下面我們來看看如何通過幾個步驟快速的實現一個功能相對齊全的 CLI 程序。和做飯一樣,能夠快速獲得成就感的方式是找半成品直接下鍋炒一盤:)。

下面我們具體看看,如何通過 interactcli-rs 實現一個功能齊全的命令行程序

來點感性認識

先把項目 clone 下來運行個例子

運行上面的命令是通過 http 來請求百度

四步做個 CLI

首先我們先來看看框架的目錄結構

.
├── examples
├── log
├── logs
└── src
    ├── cmd
    ├── commons
    ├── configure
    ├── interact
    ├── logger
    └── request

cmd 目錄是我們做自己功能時要動的主要目錄,下面我們一步一步的實現 requestsample 命令。

下次爲大家介紹一下 interactcli-rs 各種功能是如何實現的。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/_RbxNcaRBQCLicLjCgmOtw