イベントループの設計 これらを1つのイベントループでどう協調させるかが最初の課題です。 最初に考えたのは、すべてのデータ取得をtokioのタスクとして非同期に走らせるアプローチです。しかし、ポートスキャンやプロセス一覧の取得はコマンド実行やシステムコール経由であり、非同期化してもほとんどメリットがありません。むしろ、同期的な処理と非同期処理を混在させたイベントループのほうが、実装がシンプルになりました。 let tick_rate = Duration::from_millis(config.general.refresh_rate_ms); let mut last_tick = Instant::now(); loop { // まず現在の状態を描画する terminal.draw(|f| ui::draw(f, &app))?; // 次のtickまで待ちつつ、上限は50msで区切る

