zerodds-idl-rust

Layer 3 — Schema (codegen). IDL4 → Rust data types (ZeroDDS spec).

IDL4 → Rust code generation for the ZeroDDS data-type stack. Reads the IDL AST from zerodds-idl and emits pub struct/enum definitions plus impl zerodds_dcps::DdsType and the matching zerodds_cdr::CdrEncode/CdrDecode helpers — final, appendable and mutable extensibility each mapped to the correct XCDR2 wire path. A build-time tool (forbid(unsafe_code), std-only) consumed via zerodds-idlc.

Spec anchors

  • ZeroDDS-own spec — IDL4 → Rust with the DdsType trait.
  • Final / appendable / mutable each mapped to its XCDR2 wire path.

Quick start

Turn a parsed IDL AST into a ready-to-compile Rust module:

use zerodds_idl_rust::{generate_rust_module, RustGenOptions};

// `ast` is an OMG IDL 4.2 AST parsed by the `zerodds-idl` crate
let rust_src = generate_rust_module(&ast, &RustGenOptions::default())?;

Modules

  • emitter — top-level module emission.
  • struct_emit / enum_emit / union_emit / typedef_emit / bitset_emit — per-construct codegen.
  • type_map / type_identifier — IDL → Rust mapping + XTypes identifiers.
  • annotations@key/@id/@extensibility handling.
  • errorRustGenError family.

Coverage & tests

Coverage ledger: zerodds-idl-rust-1.0. Driven by tools/idlc + snapshot tests; run cargo test -p zerodds-idl-rust.

Stability

1.0.0-rc.3. Driven by tools/idlc + snapshot tests.

zerodds-idl-rust

Layer 3 — Schema (codegen). IDL4 → Rust-DataTypes (ZeroDDS-eigene Spec).

IDL4 → Rust-Codegenerierung für den ZeroDDS-DataType-Stack. Liest den IDL-AST aus zerodds-idl und emittiert pub struct/enum-Definitionen plus impl zerodds_dcps::DdsType und die passenden zerodds_cdr::CdrEncode/CdrDecode-Helper — Final-, Appendable- und Mutable-Extensibility jeweils auf den korrekten XCDR2-Wire-Pfad abgebildet. Ein Build-Zeit-Tool (forbid(unsafe_code), std-only), konsumiert via zerodds-idlc.

Spec-Anker

  • ZeroDDS-eigene Spec — IDL4 → Rust mit dem DdsType-Trait.
  • Final / Appendable / Mutable jeweils auf den XCDR2-Wire-Pfad abgebildet.

Quick Start

Aus einem geparsten IDL-AST ein fertig kompilierbares Rust-Modul erzeugen:

use zerodds_idl_rust::{generate_rust_module, RustGenOptions};

// `ast` is an OMG IDL 4.2 AST parsed by the `zerodds-idl` crate
let rust_src = generate_rust_module(&ast, &RustGenOptions::default())?;

Module

  • emitter — Top-Level-Modul-Emission.
  • struct_emit / enum_emit / union_emit / typedef_emit / bitset_emit — Codegen pro Konstrukt.
  • type_map / type_identifier — IDL → Rust Mapping + XTypes-Identifier.
  • annotations@key/@id/@extensibility-Behandlung.
  • errorRustGenError-Familie.

Coverage & Tests

Coverage-Ledger: zerodds-idl-rust-1.0. Getrieben von tools/idlc + Snapshot-Tests; cargo test -p zerodds-idl-rust.

Stabilität

1.0.0-rc.3. Getrieben von tools/idlc + Snapshot-Tests.