用途:这是 SpacetimeDB 的 Rust 服务端模块 SDK 参考,适合在 Rust 中编写数据库表、reducer 和模块逻辑时查阅。
主要能力:
- 表定义:用 #[spacetimedb::table(...)] 标注 pub struct,accessor 必须为 snake_case,支持 public、scheduled(reducer_fn)、index(...) 等选项。
- 列类型:无符号/有符号整数、256 位整数、浮点、bool、String、Vec<T>、Identity、ConnectionId、Timestamp、TimeDuration、Uuid、Option<T>。
- 列属性:#[primary_key]、#[auto_inc]、#[unique]、#[index(btree)]、#[default(true)]。
- 索引:单列用内联 #[index(btree)],多列用表级 index(accessor=..., btree(columns=[...]))。
- reducer:用 #[spacetimedb::reducer] 标注,可返回 Result<(), String> 或 Result<(), E>。
- 数据库操作:insert、try_insert、find、filter、iter、count、update、delete,支持 btree 范围查询。
- 生命周期钩子:init、client_connected、client_disconnected。
- 视图:匿名视图与按用户视图,支持过程式视图主键与查询构建器。
- 定时表:ScheduleAt::Time 与 ScheduleAt::Interval。
- 过程与 HTTP:#[procedure] 使用 &mut ProcedureContext,出站 HTTP 通过 ctx.http,入站 HTTP 用 #[handler] 与 #[router]。
- 日志:log::info!、log::warn!、log::error!。
- 自定义类型:#[derive(SpacetimeType)]。
必要用法:需 use spacetimedb::{...} 导入,Table 必须导入,否则 ctx.db.*.insert() 等方法无法编译。ReducerContext 是 sender 身份、时间与随机数的唯一来源,模块内不可用标准库时钟与 RNG。
限制:insert() 遇约束冲突会 panic,返回 Result 时应使用 try_insert() 配合 ?。iter() 与 filter() 返回迭代器,需要 sort/filter/map 时先收集为 Vec。过程式视图表句柄不支持全表 iter()。HTTP 响应不可克隆,需先检查状态与头再消费 body。HandlerContext 不暴露 db,需用 ctx.with_tx(|tx| ...) 打开数据库访问。网络 I/O 应在开启事务前完成。
适用场景:编写 SpacetimeDB Rust 服务端模块、表结构、reducer、视图、定时任务与 HTTP 处理逻辑时参考。
暂未提供:安装命令、收费与价格、平台支持范围等资料未在给定内容中说明。