跳转至

实现数据互通

本章目标:让 Rust、C++/Python 节点围绕同一套消息模型协作。

1. 透明消息用于互通

保持 SensorData / MotorCommand 为透明类型:

#[roplat::roplat_msg]
#[repr(C)]
pub struct SensorData { /* ... */ }

这是跨语言互通的基础。

2. 引入 opaque(可选)

当你确实需要语言私有数据时,再引入:

#[roplat::roplat_msg(lang = "cpp")]
pub struct CppData;

注意:

  1. Rust 侧不填字段。
  2. 字段由 cpp/src/cpp_data.h 或目标语言用户文件定义。

3. 数据流建议

  1. 主链路使用透明消息。
  2. 私有优化状态使用 opaque。
  3. 主链路先稳定,再追加 opaque。

4. 验证清单(tree)

rust_starter/
├─ src/
│  ├─ msg.rs
│  ├─ nodes.rs
│  └─ puppet.rs
├─ cpp/
│  ├─ roplat_gen/
│  └─ src/
└─ py/
   ├─ roplat_gen/
   └─ py_planner.py

5. 运行与检查

cargo run
cargo clippy --all-targets -- -D warnings

通过后进入 编译与发布使用