zerodds-flatdata-derive 1.0.0-rc.1

#[derive(FlatStruct)] proc-macro fuer zerodds-flatdata-1.0 (Type-Hash + repr(C)-Check).
Documentation

zerodds-flatdata-derive

License: Apache-2.0 docs.rs

Proc-Macro #[derive(FlatStruct)] fuer den zerodds-flatdata-Trait. Generiert unsafe impl FlatStruct for T mit einem deterministischen SHA-256-basierten TYPE_HASH aus Type-Name und Field-Layout. Safety classification: STANDARD (proc-macro).

Spec-Mapping

Spec Abschnitt
ZeroDDS-flatdata 1.0 §1.2 (Derive-Macro)

Was ist drin

  • #[derive(FlatStruct)] — generiert unsafe impl ::zerodds_flatdata::FlatStruct mit TYPE_HASH = sha256(layout_signature(T))[..16].
  • Compile-Time-Checks:
    • enum/union werden mit compile_error! abgelehnt (kein stabiles Layout).
    • Fehlendes #[repr(C)] / #[repr(transparent)] wird mit compile_error! abgelehnt (Default-Repr ist nicht garantiert layout-stabil).
  • Layout-Signatur <TypeName>{<field-name>:<field-ty>,...} erkennt Type-Rename, Field-add/remove, Field-reorder, Field-Type-Change.

Schichten-Position

Layer 4 — Core Services. Build-Time-Companion zu zerodds-flatdata, keine Runtime-Code-Surface. Keine ZeroDDS-Crate-Deps.

Quickstart

use zerodds_flatdata_derive::FlatStruct;

#[derive(Copy, Clone, FlatStruct)]
#[repr(C)]
struct Pose { x: f64, y: f64, z: f64 }

// expandiert zu:
//
//   unsafe impl ::zerodds_flatdata::FlatStruct for Pose {
//       const TYPE_HASH: [u8; 16] = [/* sha256("Pose{x:f64,y:f64,z:f64}")[..16] */];
//   }

WIRE_SIZE und die as_bytes/from_bytes_unchecked-Methoden kommen als Default aus dem Trait und brauchen keinen Macro-Override.

Feature-Flags

Keine. Die Crate ist eine reine proc-macro-Lib.

Stabilitaet

1.0.0-rc.1 ist die initiale Release-Materialisierung. Alle oeffentlichen Macro-Pfade sind RC1-stabil; Layout-Signatur-Format gilt als Wire-Stabil — eine Aenderung wuerde alle generierten TYPE_HASH- Werte invalidieren und ist daher Major-Breaking.

Build & Test

cargo build -p zerodds-flatdata-derive
# Tests stehen in zerodds-flatdata, weil proc-macro-Crates ihre eigenen
# Output nicht testen koennen:
cargo test -p zerodds-flatdata --test derive

Lizenz

Apache-2.0. Siehe LICENSE.

Siehe auch