命令列應用程式

為何選擇 Rust?

打勾的盾牌

可靠且迅速

就算只是要寫一個簡短的一次性腳本,您都可以確保它是快速、易於測試且能提供有用的輸出資訊。

Rust 的保障
打勾的箱子

容易發行

將所有內容編譯成單一執行檔;您的使用者不必安裝運行時系統或函式庫。

如何發佈 Rust 程式碼
筆記與齒輪

穩固的設置

輕鬆處理跨平台的設置文件,Rust 就能為您處理命名空間與格式。

開始設置
協助手冊

協助手冊?輕鬆搞定。

為您的應用程式自動產生手冊頁面,只要包裝好產生的檔案您就完成了。

馬上了解
管線

資料進、資料出

除了與人交流外,Rust 還有很棒的工具能幫助您與機器溝通。

與機器溝通
木頭堆

靈活的日誌紀錄

要加入日誌紀錄是很方便的,而要設置到不同目標或不同格式之間也是相當簡單的。

紀錄、追蹤、了解

易於維護的程式碼

命令列應用程式結構

馬上攔截錯誤

如果設置文件遺失或損壞了呢?如果環境變數的內容有空的怎麼辦?這些狀況都很容易忘記!但有了錯誤處理與函式庫的設計,Rust 會在您運行您的程式之前就指出這些「假設」的情境。

Rust 的錯誤處理
命令列不是造火箭

方便後續擴展

Rust 讓你能靈活地組織程式碼。從單一檔案開始,到當您需要更多功能而重構程式碼時,您都能確保不會破壞任何內容。

重構 Rust

立即開始!

編寫命令列應用程式是個學習 Rust 的好方法

定義輸入

use clap::Parser;

/// Read some lines of a file
#[derive(Debug, Parser)]
struct Cli {
    /// Input file to read
    file: String,
    /// Number of lines to read
    #[structopt(short = 'n')]
    num: usize,
}

編寫工具

use std::{error::Error, fs::read_to_string};

fn main() -> Result<(), Box> {
    let args = Cli::parse();
    read_to_string(&args.file)?
        .lines()
        .take(args.num)
        .for_each(|line| println!("{}", line));
    Ok(())
}
閱讀命令列指南了解更多

產品應用

sentry 標誌
我們喜歡 Rust 的原因之一是因為 crates.io 的生態系統。[...] 目前已經有很多非常棒的現有架構能來建構出漂亮的命令列介面。

– Armin Ronacher, 《Rust 在 Sentry 中的應用》 – PolyConf 2017


我從沒後悔有這些函式庫。[…] 使用 Rust 製作 CLI 或是控制台的工具帶給我很大的好處,它非常善於針對不同目標系統進行編譯。

– Fletcher Nichol, 《把 Rust 帶進正式環境》 – RustFest Kyiv

Habitat 標誌