zerodds-flatdata-derive
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)]— generiertunsafe impl ::zerodds_flatdata::FlatStructmitTYPE_HASH = sha256(layout_signature(T))[..16].- Compile-Time-Checks:
enum/unionwerden mitcompile_error!abgelehnt (kein stabiles Layout).- Fehlendes
#[repr(C)]/#[repr(transparent)]wird mitcompile_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 FlatStruct;
// 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
# Tests stehen in zerodds-flatdata, weil proc-macro-Crates ihre eigenen
# Output nicht testen koennen:
Lizenz
Apache-2.0. Siehe LICENSE.
Siehe auch
zerodds-flatdata— derFlatStruct-Trait selbst.docs/specs/zerodds-flatdata-1.0.md§1.2.