为下一个应用打下基础
创建 Rust 应用
从空目录开始,构建类型安全的桌面应用。
实验性源码版本。生产安全加固与 SDK 发布仍在进行中。
初始化项目#
按快速开始安装 CLI。tuff init 生成 Cargo.toml、build.rs、src/lib.rs、shell_api.d.ts、tuffite.json、简单 HTML 前端及生成绑定。目标目录必须为空。生成的项目依赖匹配版本的已发布 tuffite SDK。
shell
tuff init my-app
cd my-app
tuff check
tuff build --release使用已发布的 SDK#
应用使用 Rust 库;build.rs 启用构建辅助功能,用于解析运行时和生成绑定。SDK 版本需与创建项目的 CLI 保持一致。原生构建会自动解析兼容的 Framework Distribution。
toml
[dependencies]
tuffite = { version = "0.1.0", default-features = false }
[build-dependencies]
tuffite = { version = "0.1.0", default-features = false, features = ["build"] }实现应用生命周期#
Browser::new 仅在 browser 进程接收 BrowserContext。#[tuffite::browser] 标记实现;#[tuffite::main] 导出 ABI 入口表,app::Builder 显式注册命令处理器。编译时会根据生成的端点声明检查处理器类型。
rust
use tuffite::{BrowserContext, Browser, ApplicationResult, CommandError};
mod shell_api {
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
}
struct App;
#[tuffite::browser]
impl Browser for App {
fn new(_context: BrowserContext) -> ApplicationResult<Self> { Ok(Self) }
}
#[tuffite::main(browser = App)]
fn main() -> tuffite::app::Builder<App> {
tuffite::app::Builder::new().commands(tuffite::generate_handler![ping])
}
#[tuffite::command(shell_api::commands::Ping)]
fn ping(_app: &mut App, message: String) -> Result<String, CommandError> {
Ok(message)
}