Rust のコマンドを JS から呼び出す (invoke)

Recipe ID: front-001

フロントエンド(JavaScript/TypeScript)から Rust で定義した関数(Command)を呼び出す基本的な方法を解説します。
Tauri の IPC(プロセス間通信)の核となる機能です。

前提: Rust 側の準備

Rust 側で #[tauri::command] アトリビュートを付けた関数を定義し、ハンドラとして登録する必要があります。

編集ファイル: src-tauri/src/lib.rs

// src-main.rs または lib.rs
#[tauri::command]
fn simple_command() {
    println!("Called from JS!");
}

fn main() {
    tauri::Builder::default()
        .invoke_handler(tauri::generate_handler![simple_command])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

フロントエンド側の実装

@tauri-apps/api/core パッケージ(v2 の場合)の invoke 関数を使用します。

編集ファイル: src/App.tsx (例)

import { invoke } from '@tauri-apps/api/core';

async function callRust() {
  await invoke('simple_command');
  console.log('Command invoked');
}

基本的な呼び出しはこれだけです。非同期関数 (Promise) として実行される点に注意してください。