Rust SDK 开发指南
当你开发 sdks/rust 时,使用这页。
这个模块负责什么
sdks/rust 负责:
- Rust 协议镜像类型
- 路径匹配和 registry 行为
- async client lifecycle 与 routed invocation handling
- websocket 和 HTTP loop transport
- crate 元数据和 Rust 侧测试
它不负责:
packages/protocol下的协议真源packages/server下的服务端行为- JVM 或 Python 的运行时打包问题
构建与测试
先从 crate 级命令开始:
bash
cargo test --manifest-path sdks/rust/Cargo.toml
cargo package --manifest-path sdks/rust/Cargo.toml它们分别证明:
cargo test验证 registry 行为、client lifecycle、ping/pong 和 invocation handlingcargo package证明当前 manifest 能正确组装出可发布 crate
常见开发回路
常见回路是:
- 修改
sdks/rust/src/** - 运行
cargo test --manifest-path sdks/rust/Cargo.toml - 如果 manifest、README 或 public export 变了,再运行
cargo package --manifest-path sdks/rust/Cargo.toml - 如果行为跟随协议变化,再去对照
packages/protocol/src/**
调试预期
先判断问题落在哪一层:
src/path_utils.rs路径校验或 specificitysrc/registry.rshandler 解析和 invocation shapingsrc/client.rs连接生命周期或 register/sync/disconnect 流程src/transport.rs线传输和 session 行为
当真实 transport 出问题时,先把原始 text frame 或 HTTP payload 打出来,再改 typed struct。这里最常见的首个错位其实是 JSON 字段名,不是 async 控制流。
常见故障
NotConnected在connect()前调用了register()或sync_catalog()UnknownPath注册 pattern 和收到的路径在段数或保留叶子形状上不匹配CallClientResult里出现 handler error 注册 closure 返回了错误,或者对 request body 形状假设错了- websocket 建链失败 先检查 URL scheme、TLS 假设和请求头,再改消息逻辑
发布与打包说明
这个 SDK 走共享的 v* release workflow。
本地发布前检查:
bash
cargo test --manifest-path sdks/rust/Cargo.toml
cargo package --manifest-path sdks/rust/Cargo.toml仓库侧的发布要求放在 多语言 SDK 包发布。