SuperAPI AI 工具集

spacetimedb-rust

编程与开发

查看项目

更新于 10-15 21:12

技能介绍

用途:该资料面向用 Rust 编写 SpacetimeDB 服务端模块(WebAssembly 应用),适用于编写表(tables)、reducer(事务函数)与模块逻辑。资料声明其测试环境为 SpacetimeDB runtime 1.11.x、spacetimedb crate 1.1.x。

主要能力与用法:模块在数据库内运行,用表存数据、用 reducer 改数据。项目需在 Cargo.toml 中设置 crate-type = ["cdylib"](WebAssembly 编译必需),依赖 spacetimedb = "1.0"。常用导入:use spacetimedb::{ReducerContext, Table};表用 #[table(name = player, public)] 定义,列可加 #[primary_key]、#[unique]、#[auto_inc]、#[index(btree)]、#[default]。reducer 首参必须为 &ReducerContext,可返回 Result<(), String>;表操作通过方法访问,如 ctx.db.player().insert(...)、ctx.db.player().id().find(&id)、filter、update、delete、iter、count。支持 init、client_connected、client_disconnected 等生命周期 reducer,以及 scheduled 表触发的定时 reducer,随机数用 ctx.random() 或 ctx.rng。

限制与注意:资料强调不得对 #[table] 结构体派生 SpacetimeType,需导入 Table trait,用 &ReducerContext 而非 &mut,表访问要带括号;reducer 必须确定性,禁止文件系统、网络、定时器或外部 RNG,网络与文件操作应改用 procedures(当前为不稳定特性,需启用 unstable feature)。public 表对所有客户端可见全部行,按用户可见需用私有表配合 row-level security。资料中出现若干幻觉 API 对照(如 #[spacetimedb::table]、#[derive(Table)])应避免。其余细节原文在传输中截断,部分内容暂未提供。