Skip to content

Main.rs

このセクションでは、 main.rsbuild.rsutils.rs の内容をカバーします。

main.rs ファイルは、アプリケーションのエントリポイントです。これが完全な main.rs ファイルです:

pub mod action;
pub mod app;
pub mod cli;
pub mod components;
pub mod config;
pub mod tui;
pub mod utils;
use clap::Parser;
use cli::Cli;
use color_eyre::eyre::Result;
use crate::{
app::App,
utils::{initialize_logging, initialize_panic_handler, version},
};
async fn tokio_main() -> Result<()> {
initialize_logging()?;
initialize_panic_handler()?;
let args = Cli::parse();
let mut app = App::new(args.tick_rate, args.frame_rate)?;
app.run().await?;
Ok(())
}
#[tokio::main]
async fn main() -> Result<()> {
if let Err(e) = tokio_main().await {
eprintln!("{} error: Something went wrong", env!("CARGO_PKG_NAME"));
Err(e)
} else {
Ok(())
}
}

本質的には、main 関数は App のインスタンスを作成し、App.run() を呼び出します。これは、“handle event -> update state -> draw” ループを実行します。これについては、後のセクションで詳しく説明します。

この main.rs ファイルには、ratatui に必ずしも関連しているわけではないが、私の意見では、ターミナル ユーザー インターフェイス (TUI) プログラムに不可欠ないくつかの重要な機能が組み込まれています。

  • コマンドライン引数の解析 (clap)
  • XDG ベース ディレクトリ仕様
  • ログ記録
  • パニック ハンドラ

これらについては、 utils.rs section で詳細に説明します。