Rust バックエンドのレシピ

Tauri コマンドの定義、引数と戻り値、Result によるエラー処理、非同期コマンド、State と Mutex による状態管理、AppHandle、ライフサイクル、別スレッド処理、serde によるシリアライズなど、Rust 側の実装パターンです。

全 10 件 / 対象: Tauri 2.x

  1. 1 Tauri コマンド関数を定義する #[tauri::command] を付けた Rust 関数を generate_handler! に登録して JS から呼べるようにする。モジュールに分けるときの pub の付け方、rename_all、開発ビルドだけの登録も示す。 更新日: 2026-09-12
  2. 2 Result 型を使ってエラーハンドリングする コマンドの戻り値を Result にして失敗を JS に返す。String から始め、thiserror と手書きの Serialize で ? が使える独自エラー型を作り、kind と message の形で返す方法を示す。 更新日: 2026-09-12
  3. 3 非同期(async)コマンドを定義する async fn のコマンドは非同期ランタイムのスレッドで、同期コマンドはメインスレッドで動く。参照を含む引数で Result が必須になる制約、State と Mutex の扱い、spawn_blocking も示す。 更新日: 2026-09-12
  4. 4 State と Mutex でアプリの状態を管理する manage() で登録した値をコマンドの State 引数で受け取り、Mutex で書き換える。std と tokio の Mutex の使い分け、await をまたいでロックを持たない書き方、型の不一致も示す。 更新日: 2026-09-12
  5. 5 AppHandle を使ってアプリ全体を操作する コマンドの引数や setup で AppHandle を受け取り、clone() して別スレッドへ渡す。Manager・Emitter トレイトで使える操作と、終了やウィンドウ作成で困る場面も示す。 更新日: 2026-09-12
  6. 6 Rust から特定のウィンドウを操作する(WebviewWindow) Rust でラベルから WebviewWindow を取り出し、呼び出し元や別のウィンドウを操作する。WebviewWindow と Window の違い、閉じたウィンドウの扱い、1 つのウィンドウへのイベント送信も示す。 更新日: 2026-09-12
  7. 7 アプリ起動・終了時の処理を書く (ライフサイクル) setup で起動時の初期化を行い、run() のコールバックで RunEvent を受けて終了前に保存する。prevent_exit() で終了を止める条件と、Exit が届かない終わり方も示す。 更新日: 2026-09-12
  8. 8 重い処理を別スレッド・非同期で実行する 重い計算は async コマンドから spawn_blocking に逃がし、常駐する処理は std::thread で専用スレッドにする。Channel での進捗の送り方と、フラグで途中で止める方法も示す。 更新日: 2026-09-12
  9. 9 Serde で構造体と JSON を変換する serde の属性で Rust の構造体と JS に届く JSON の形を合わせる。rename_all、Option と null / undefined の対応、enum の 4 通りの表し方、chrono での日付の受け渡しを示す。 更新日: 2026-09-12
  10. 10 パニック(クラッシュ)時の処理を書く std::panic::set_hook で panic をログファイルと印のファイルに残し、次回起動時に知らせる。コマンド内の panic で JS の invoke がどうなるかと、panic = abort の影響も示す。 更新日: 2026-09-12