spacetimedb-client-rust について
SpacetimeDB SDKを使ったRustクライアント実装向けのスキルです。バインディング生成、接続とサブスクリプションのライフサイクル、テーブルコールバック、reducer呼び出しを扱い、サーバー側の作業は別のスキルに案内します。
主な機能
- 01Rustクライアントバインディングを生成
- 02接続とサブスクリプションを設定
- 03ランタイムを進めてキャッシュを更新
- 04購読行の読み取りとインデックス利用
- 05テーブルコールバック登録とreducer呼び出し
活用シーン
- 01SpacetimeDBモジュール用のRustクライアントを構築
- 02クライアントでサブスクリプションとテーブル更新を処理
- 03生成バインディングをRustプロジェクトに合わせる
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ danmossa/ spacetimedb-skills --skill spacetimedb-client-rustインストール後、Claude Code で/spacetimedb-client-rustを入力して読み込まれたか確認します。
同梱ファイルreferences/clients-rust.md
詳細
Rust クライアントの実装には、このスキルを使用してください。
Rust の基本パターン
Rust バインディングを生成し、生成された名前をローカルモジュールからインポートします。
spacetime generate --lang rust --out-dir client/src/module_bindings --module-path spacetimedb
use module_bindings::DbConnection;
let conn = DbConnection::builder()
.with_uri("ws://localhost:3000")
.with_database_name("my-database")
.on_connect(|ctx, identity, _token| {
log::info!("connected: {identity}");
ctx.subscription_builder().subscribe_to_all_tables();
})
.on_connect_error(|_ctx, err| log::error!("connect error: {err}"))
.on_disconnect(|_ctx, err| log::info!("disconnected: {err:?}"))
.build()?;
conn.run_threaded();
実行時のルール
run_threaded、run_async、またはframe_tickを使用して接続を進めます。コールバックとキャッシュの更新には、これらのいずれかが必要です。- サブスクライブした行は、
conn.db.<table>().iter()、.count()、および生成された一意キー/インデックスハンドルを通じて読み取ります。 - 生成されたテーブルハンドルで
on_insert、on_delete、on_updateコールバックを登録します。on_updateには主キーが必要です。 - トレイトジェネリックなコールバックコンテキストでは、
conn.reducers.<reducer>(...)またはctx.reducers()を使用します。 - 生成されたバインディングのモジュール名と機能フラグを、ローカルプロジェクトに合わせます。
リファレンス一覧
| 必要な情報 | 開く |
|---|---|
| Rust SDK API | references/clients-rust.md |
ガイダンス
- 生成されたモジュール名とバインディングのパスは、ローカルプロジェクトに合わせます。
- 接続のライフサイクル、サブスクリプションのコールバック、リデューサーの呼び出しは、Rust SDK のリファレンスに沿って実装します。
- Rust サーバーモジュールのスキーマやリデューサーのコードについては、このクライアントスキルではなく、テーブルおよびリデューサーのスキルを参照してください。
コメント
Markdown 対応