💕

Rust の CLI 作りに便利そうなクレート

2024/06/02に公開

はじめに

Rust でサクッと CLI を作ってみたいと考え、色々調べていたところ、
「なんか便利そう!」「これ面白い!」が結構出てきたので紹介させてください。

ゆるく3つほど紹介していければと思いますので、ぜひ。

figlet-rs

https://github.com/yuanbohan/rs-figlet

文字を立体的に出力できるクレート。

use figlet_rs::FIGfont;

fn main() {
    let standard_font = FIGfont::standard().unwrap();
    let figure = standard_font.convert("Hello Rust");
    assert!(figure.is_some());
    println!("{}", figure.unwrap());
}

いい感じでかっこいい!

半角英数字であればOKそうです。
さすがに日本語には対応していませんでした。

色々応用できそうで良いですね〜

colored

https://github.com/colored-rs/colored

文字に色をつけることのできるクレート。

use colored::Colorize;

fn main() {
    println!("{} {}", "Hello,".red(), "World!".blue())
}

カラフルで映えますね。
色だけでなく、文字の太さなどのスタイルも自由にカスタマイズできそうでした

dialoguer

https://github.com/console-rs/dialoguer

対話形式のクレート。

use dialoguer::{Confirm, Input, Select};

fn main() {
    let name: String = Input::new()
        .with_prompt("あなたの名前は?")
        .interact_text()
        .unwrap();
    println!("Hello, {}!", name);

    let food = Select::new()
        .with_prompt("好きな食べ物は?")
        .items(&["うどん", "パスタ", "ラーメン"])
        .default(0)
        .interact()
        .unwrap();
    println!("You selected: {}", ["うどん", "パスタ", "ラーメン"][food]);

    let confirm = Confirm::new().with_prompt("もう一回?").interact().unwrap();
    if confirm {
        println!("Continuing...");
    } else {
        println!("Exiting...");
    }
}

インタラクティブな実装が簡単にできるのは Good!

おわりに

調べた感じ、このようなOSSライブラリは結構ありそうでした。
Rust もこれから認知度が上がって、これらのライブラリは重宝されていくと思いますので、
定期的にウォッチしつつ、CLI作りに励んでいきたいですね。

では。

コラボスタイル Developers

Discussion