极简注解,双向互调。用两个宏打通 TypeScript 与 Rust 的边界,自动生成类型,零配置构建。
#[tsffi::callback]
fn on_progress(pct: f64) -> bool {
println!("进度: {}%", pct);
pct < 100.0
}
#[tsffi::export]
fn process_file(path: String) -> Result<String> {
let data = fs::read_to_string(&path)?;
Ok(transform(&data))
}TypeScript 调用 Rust,Rust 也能回调 TypeScript。真正的双向互调。
#[tsffi::callback] + #[tsffi::export],零样板代码。
Rust 类型自动映射为 TypeScript 类型定义,无需手写 .d.ts。
开箱即用的构建流程,无需手动配置 napi 或 wasm。
预编译 Windows / macOS / Linux 原生二进制,安装即用。
Rust panic 被 PanicHook 捕获,不会崩溃 Node.js 进程。
| 特性 | TSFFI.B | node-rs |
|---|---|---|
| 调用方向 | TS <-> Rust 双向 | TS -> Rust 单向 |
| 回调支持 | #[tsffi::callback] 原生支持 | 需手动绑定 |
| 类型生成 | 自动生成 .d.ts | 需手动维护 |
| 构建配置 | 零配置 | 需配置 napi |
| 异常隔离 | PanicHook 捕获 | 进程崩溃 |
| 预编译二进制 | 全平台 | 部分平台 |
基于双向回调的基准测试