mcpField
S
spacetimedb-client-rust

spacetimedb-client-rust

github.com/danmossa開発2155 回インストール19 週間前に更新
リポジトリ

spacetimedb-client-rust について

SpacetimeDB SDKを使ったRustクライアント実装向けのスキルです。バインディング生成、接続とサブスクリプションのライフサイクル、テーブルコールバック、reducer呼び出しを扱い、サーバー側の作業は別のスキルに案内します。

主な機能

  1. 01Rustクライアントバインディングを生成
  2. 02接続とサブスクリプションを設定
  3. 03ランタイムを進めてキャッシュを更新
  4. 04購読行の読み取りとインデックス利用
  5. 05テーブルコールバック登録とreducer呼び出し

活用シーン

  1. 01SpacetimeDBモジュール用のRustクライアントを構築
  2. 02クライアントでサブスクリプションとテーブル更新を処理
  3. 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 APIreferences/clients-rust.md

ガイダンス

  • 生成されたモジュール名とバインディングのパスは、ローカルプロジェクトに合わせます。
  • 接続のライフサイクル、サブスクリプションのコールバック、リデューサーの呼び出しは、Rust SDK のリファレンスに沿って実装します。
  • Rust サーバーモジュールのスキーマやリデューサーのコードについては、このクライアントスキルではなく、テーブルおよびリデューサーのスキルを参照してください。

コメント