pub unsafe trait FlatStruct:
Copy
+ 'static
+ Send
+ Sync {
const TYPE_HASH: [u8; 16];
const WIRE_SIZE: usize = _;
// Provided methods
fn as_bytes(&self) -> &[u8] ⓘ { ... }
unsafe fn from_bytes_unchecked(bytes: &[u8]) -> Self { ... }
}Expand description
Marker-Trait fuer FlatData-faehige Types.
Spec-Zitat (zerodds-flatdata-1.0 §1.1):
Garantiert:
Self: Copy(kein Drop-Glue, plain bytes)Self: 'static(kein Lifetime-Reference)#[repr(C)]mit fest definiertem Alignmentas_bytes()undfrom_bytes_unchecked()sind safe-by-Layout
§Safety
Implementer MUSS sicherstellen:
Selfist#[repr(C)](oder#[repr(transparent)]ueber einen einzigenrepr(C)-Type).- Alle Felder sind
FlatStructoder Primitiv-Types ohne padding- sensitive UB (kein#[repr(packed)]mit Pointer-aligned Fields). Self: Copy(Trait-Bound erzwingt das).TYPE_HASHist eindeutig fuer die exakte Wire-Layout-Variante; bei jeder Schema-Aenderung MUSS der Hash regeneriert werden.
Required Associated Constants§
Provided Associated Constants§
Provided Methods§
Sourcefn as_bytes(&self) -> &[u8] ⓘ
fn as_bytes(&self) -> &[u8] ⓘ
Liefert das Slot-Layout als Slice. Safe-by-Layout — Self: Copy
repr(C)garantieren dass der byte-cast defined ist.
Sourceunsafe fn from_bytes_unchecked(bytes: &[u8]) -> Self
unsafe fn from_bytes_unchecked(bytes: &[u8]) -> Self
Rekonstruiert aus rohem Slice. Caller MUSS:
- bytes.len() >= WIRE_SIZE
- bytes-Provenance valide fuer WIRE_SIZE
- Type-Hash zuvor verifiziert (sonst UB bei alignement-Mismatch)
§Safety
Siehe oben.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.