zerodds-types 1.0.0-rc.1

OMG XTypes 1.3 type system: TypeIdentifier + TypeObject (Minimal/Complete) + Assignability + DynamicType + TypeLookup. Pure-Rust no_std + alloc.
Documentation

zerodds-types

License: Apache-2.0 Crates.io docs.rs

OMG XTypes 1.3 Type-System: TypeIdentifier + TypeObject (Minimal/Complete) + Assignability + DynamicType + TypeLookup-Service.

Pure-Rust no_std + alloc, forbid(unsafe_code). Part of ZeroDDS. Safety classification: SAFE.

Spec

  • OMG XTypes 1.3 §7.3 (Type-System: TypeIdentifier / TypeObject / Hashing / Resolution)
  • OMG XTypes 1.3 §7.5 (DynamicType / DynamicData Reflection-API)
  • OMG XTypes 1.3 §7.6 (Wire-Encoding + Discovery + Bridge zu DynamicType)
  • OMG XTypes 1.3 §7.2.4 (Assignability + Compatibility)
  • OMG DDS 1.4 §2.2.3 (TypeConsistencyEnforcement QoS-Policy)

Public-API-Module

Modul Spec Zweck
type_identifier §7.3.4.2 Discriminated TypeIdentifier-Union (primitive/string/plain/hashed)
type_object §7.3.4 Minimal + Complete TypeObject mit allen 10 Kinds (Struct/Union/Enum/Bitmask/Bitset/Alias/Array/Sequence/Map/Annotation)
type_information §7.3.5 TypeInformation + Dependencies-Tracking
type_lookup §7.3.6 getTypes / getTypeDependencies IDL-Service
builder (intern) Programmatischer Builder für alle TypeObject-Kinds
hash §7.3.1.2 MD5 → 14-byte EquivalenceHash + NameHash
resolve §7.3.4.10 TypeRegistry + Alias-Resolution + DoS-Caps
assignability §7.2.4 Type-Compatibility-Regeln zwischen Writer + Reader
type_matcher §7.6.3.7 TypeConsistencyEnforcement-aware Writer↔Reader-Match
qos DDS 1.4 §2.2.3 TypeConsistencyEnforcement + DataRepresentation
dynamic §7.5 + §7.6.3 DynamicType / DynamicData + TypeObject-Bridge

Quick Start

use zerodds_types::{TypeIdentifier, PrimitiveKind};
use zerodds_types::resolve::TypeRegistry;
use zerodds_types::qos::TypeConsistencyEnforcement;
use zerodds_types::type_matcher::TypeMatcher;

let writer = TypeIdentifier::Primitive(PrimitiveKind::Int32);
let reader = TypeIdentifier::Primitive(PrimitiveKind::Int32);
let tce = TypeConsistencyEnforcement::default();
let m = TypeMatcher::new(&tce);
let registry = TypeRegistry::new();
assert!(m.match_types(&writer, &reader, &registry).is_match());

DynamicType ↔ TypeObject Bridge

zerodds_types::dynamic::DynamicType::to_type_object unterstützt Bridge für: Struct, Union, Enumeration, Bitmask, Alias. Collection-Kinds (Array/Sequence/Map) werden via TypeIdentifier exklusiv repräsentiert (XTypes §7.3.4 — keine CompleteTypeObject-Variante). Bitset und Annotation benötigen MemberDescriptor-Erweiterungen.

Wiring-Status

assignability und type_matcher sind Public-API für End-User-Code, der eigene Type-Compatibility-Checks außerhalb der DDS-Discovery-Pipeline durchführt (z.B. Bridge-Implementations, Schema-Registries). Die ZeroDDS-Discovery-Pipeline matched aktuell per type_name (DDS 1.4 §2.2.3 Default-Path); volle XTypes-1.3-§7.6 TypeIdentifier-aware Discovery ist eine eigene cross-layer Architektur-Epic (TypeIdentifier-Konstanten in Codegen + SEDP-Propagation + TypeRegistry-shared-state).

Feature-Flags

Feature Default Zweck
std std-Re-Exports, implies alloc
alloc mandatory (Vec / String / BTreeMap für TypeObject-Container)

Tests

cargo test -p zerodds-types: 354+ Tests (285 unit + 9 dynamic + 40 compliance_typeobject + 5 fuzz_smoke + 5 proptest_assignability + 8 type_lookup_service + doctests).

Stability

Alle Public-API-Items sind ab 1.0.0-rc.1 semver-stabil.

Links