用途:讲解 Tauri v2 中前端调用 Rust 后端函数的方式,核心是命令系统与 invoke 函数。Tauri 提供两种 IPC 机制:命令(推荐,类型安全的函数调用,参数与返回值经序列化)和事件(动态单向通信,本文不涉及)。
主要能力:用 #[tauri::command] 定义命令,并在 tauri::Builder 的 invoke_handler 中用 tauri::generate_handler![...] 注册;前端用 import { invoke } from '@tauri-apps/api/core' 调用,返回 Promise。参数默认将 Rust snake_case 映射为 JS camelCase,可用 rename_all 调整;复杂参数需实现 serde::Deserialize,返回值需实现 serde::Serialize。大二进制数据可用 tauri::ipc::Response 绕过 JSON 序列化。错误处理返回 Result<T, E>,E 需实现 Serialize 或为 String,前端用 try/catch 捕获;也可用 thiserror 定义自定义错误或结构化错误响应。异步命令用 async fn,但不可直接使用 &str 等借用类型,需用拥有所有权的类型。命令可注入 WebviewWindow、AppHandle、State<T> 访问窗口、应用信息与共享状态(配合 manage 注册)。高级功能包括通过 Request 访问原始请求头与 body,以及用 Channel 实现流式传输。命令可放在模块中组织,但 lib.rs 中的命令不能为 pub,且所有命令必须在单个 generate_handler! 中注册,命令名需全局唯一。
适用场景:需要在 Tauri 桌面应用中让前端安全调用 Rust 逻辑、读写文件、发起网络请求或共享状态时。
限制:命令名必须全局唯一;异步命令不能直接用借用类型;参数与返回值需满足 serde 序列化要求。具体安装与版本细节资料未提供。