zerodds-cdr-derive 1.0.0-rc.1

#[derive(DdsType)] proc-macro fuer zerodds-xcdr2-rust-1.0 (TYPE_NAME + EXTENSIBILITY + IS_KEYED + encode/decode/key_hash).
Documentation

zerodds-cdr-derive

License

Proc-macro #[derive(DdsType)] fuer XCDR2 TypeSupport. Implementiert zerodds-xcdr2-rust-1.0 §11.1.

Was diese Crate tut

Annotiert einen Plain-Rust-struct und emittiert zur Compile-Zeit eine impl zerodds_dcps::DdsType-Implementation, die XCDR2 byte-genau gegen OMG XTypes 1.3 §7.4 encoded und decoded — gleiche Wire-Form wie der idl-rust-Codegen.

Spec + Layer

  • Spec: zerodds-xcdr2-rust-1.0 §11.1; XTypes 1.3 §7.4 + §7.6.8.4.
  • Layer: 1 Primitives (Helper fuer zerodds-cdr und zerodds-dcps).

Quickstart

use zerodds_cdr_derive::DdsType;

#[derive(DdsType, Clone, PartialEq)]
pub struct Sensor {
    #[dds(key)]
    pub id: i32,
    pub value: f64,
}

// Generiert automatisch:
//   impl zerodds_dcps::DdsType for Sensor {
//       const TYPE_NAME: &'static str = "Sensor";
//       const HAS_KEY: bool = true;
//       fn encode(&self, out: &mut Vec<u8>) -> ... { ... }
//       fn decode(bytes: &[u8]) -> Result<Self, ...> { ... }
//       fn encode_key_holder_be(&self, holder: ...) { ... }
//   }

Feature-Flags

Keine.

Stability

Alle pub-Items sind 1.0.0-rc.1-stabil. Das exakte Token-Layout des Macro-Outputs kann zwischen Minor-Versionen aendern; die emittierte impl DdsType-Form bleibt spec-konform.

Links