TL;DR
- Ratatui 公式の Hello Ratatui チュートリアルに沿って、ターミナルに「hello world」を表示した。
- プロジェクトは cargo-generate で公式のテンプレートから作成できる。
環境
- Rust: 1.93.0
- cargo-generate: 0.23.7
検証
プロジェクト作成
公式のテンプレートからプロジェクトを作成する。
$ cargo generate ratatui/templates hello-worldCargo.toml の [dependencies] には、次の 3 つのクレートが入っている。
[dependencies]
color-eyre = "0.6.3"
crossterm = "0.29.0"
ratatui = "0.30.0"color-eyre は、panic と eyre::Report のエラーレポートを色付きで見やすく出力するためのクレートである。eyre は anyhow をフォークしたクレートで、トレイトオブジェクトを使ったエラーハンドリング型を提供し、エラーレポートをカスタマイズできる。Crossterm は、クロスプラットフォームに対応したターミナル操作のライブラリである。
src/main.rs
app 関数のループの中で「hello world」を描画し、何かのキーが押されたらアプリケーションを終了する。
use ratatui::{DefaultTerminal, Frame};
fn main() -> color_eyre::Result<()> {
color_eyre::install()?;
ratatui::run(app)?;
Ok(())
}
fn app(terminal: &mut DefaultTerminal) -> std::io::Result<()> {
loop {
// hello world という文字列を表示
terminal.draw(render)?;
// 何かしらのキーが押下されたら、アプリケーションを終了
if crossterm::event::read()?.is_key_press() {
break Ok(());
}
}
}
fn render(frame: &mut Frame) {
frame.render_widget("hello world", frame.area());
}動作確認
$ cargo runキーワード
- Ratatui
- Rust
- cargo-generate
- クレート
- color-eyre
- anyhow
- トレイトオブジェクト
- Crossterm