zerodds-idl-rust 1.0.0-rc.1

IDL4 → Rust code generator for ZeroDDS DataTypes (impl DdsType from zerodds-dcps).
Documentation

zerodds-idl-rust

License: Apache-2.0 docs.rs

IDL4 → Rust Code-Generator für ZeroDDS-DataTypes.

Liest den IDL-AST aus zerodds-idl und emittiert Rust-Code mit:

  • pub struct / pub enum / pub type
  • impl zerodds_dcps::DdsType (encode/decode/encode_key_holder_be)
  • impl zerodds_cdr::CdrEncode / CdrDecode für Enums

Ergänzt die anderen Sprach-Codegens idl-cpp / idl-csharp / idl-java / idl-ts um den Rust-Pfad — End-User können IDL-First-Workflows auch in Rust nutzen.

Schichten-Position

Layer 3 (Schema). Build-Zeit-Tool, std-only, forbid(unsafe_code).

Was wird emittiert

IDL Rust
struct (final) pub struct + impl DdsType mit XCDR2-Final-Wire
struct (@appendable) mit zerodds_cdr::struct_enc::encode_appendable
struct (@mutable) mit zerodds_cdr::struct_enc::MutableStructEncoder
enum pub enum #[repr(i32)] + from_wire + CdrEncode/Decode
union pub enum mit Variants pro Case
typedef pub type X = Y;
module pub mod m { ... } mit nested Definitions
@key encode_key_holder_be Implementation, member-id-sortiert
@id(N) Member-ID für mutable extensibility und KeyHolder-Sortierung

Quickstart

use zerodds_idl::config::ParserConfig;
use zerodds_idl_rust::{generate_rust_module, RustGenOptions};

let ast = zerodds_idl::parse(
    "@appendable struct Telemetry { unsigned long ts; double v; };",
    &ParserConfig::default(),
).expect("parse");

let rust_src = generate_rust_module(&ast, &RustGenOptions::default()).expect("gen");
println!("{rust_src}");

Tests

  • Snapshot-Tests (tests/snapshot_codegen.rs) — 13 Tests, jeder vergleicht den emittierten Code gegen einen committed .snap-File.
  • Compile-Check-Tests (tests/compile_check.rs, --include-ignored) — 8 Tests, jeder kompiliert den emittierten Code tatsächlich gegen ein temp-Crate mit Pfad-Deps auf zerodds-cdr+zerodds-dcps. Belegt dass der Output nicht nur snapshot-konsistent sondern auch real-kompilierbar ist.
cargo test -p zerodds-idl-rust --tests                                  # snapshot + smoke
cargo test -p zerodds-idl-rust --test compile_check -- --include-ignored # real-compile

Lizenz

Apache-2.0. Siehe LICENSE.

Siehe auch