SuperAPI AI 工具集

rust-server

编程与开发

查看项目

更新于 10-15 19:50

技能介绍

用途:这是 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 处理逻辑时参考。

暂未提供:安装命令、收费与价格、平台支持范围等资料未在给定内容中说明。