pub struct ShapeType {
pub color: String,
pub x: i32,
pub y: i32,
pub shapesize: i32,
}Expand description
RTI / Cyclone / Fast-DDS ShapesDemo-compatible application type.
See the module docs for spec and layout. Color is the instance key, x/y/shapesize are the typical shape coordinates.
Fields§
§color: StringColor / instance key. In ShapesDemo implementations typically
"BLUE", "RED", "GREEN", "YELLOW", "MAGENTA", "CYAN",
"ORANGE", "PURPLE". No content validation here — any UTF-8
string is allowed.
x: i32X coordinate in pixels (the ShapesDemo canvas is ~240×270).
y: i32Y coordinate.
shapesize: i32Shape size in pixels. Typically 30.
Implementations§
Trait Implementations§
Source§impl DdsType for ShapeType
impl DdsType for ShapeType
Source§const TYPE_NAME: &'static str = "ShapeType"
const TYPE_NAME: &'static str = "ShapeType"
Type name exactly as in RTI/Cyclone/Fast-DDS ShapesDemo. Changing it would break matching with any other ShapesDemo client.
Source§const HAS_KEY: bool = true
const HAS_KEY: bool = true
ShapesDemo IDL: @key string color. ShapeType is keyed —
per-instance QoS (TimeBasedFilter, Ownership, Lifecycle) depends
on it.
Source§fn encode_key_holder_be(&self, holder: &mut PlainCdr2BeKeyHolder)
fn encode_key_holder_be(&self, holder: &mut PlainCdr2BeKeyHolder)
Serializes the
@key member values in PLAIN_CDR2-BE format
into the given PlainCdr2BeKeyHolder. Order: ascending by
member_id (XTypes 1.3 §7.6.8.3.1.b). Read moreSource§fn encode(&self, out: &mut Vec<u8>) -> Result<(), EncodeError>
fn encode(&self, out: &mut Vec<u8>) -> Result<(), EncodeError>
Serializes
self into the XCDR2 payload sent as the
serialized_payload of a DATA submessage. Default endianness:
little-endian (RTPS 2.5 §10.5
RepresentationIdentifier = CDR2_LE = 0x0010). Read moreSource§fn decode(bytes: &[u8]) -> Result<Self, DecodeError>
fn decode(bytes: &[u8]) -> Result<Self, DecodeError>
Deserializes a little-endian XCDR2 payload. The caller ensures that
bytes contains the full sample payload (encapsulation header already
stripped). Read moreSource§const EXTENSIBILITY: Extensibility = Extensibility::Final
const EXTENSIBILITY: Extensibility = Extensibility::Final
XTypes 1.3 §7.4.5 struct extensibility kind. Default
Final
for backwards compat with pre-EXTENSIBILITY codegen outputs.
Spec: zerodds-xcdr2-rust §2.3.Source§const KEY_HOLDER_MAX_SIZE: Option<usize> = None
const KEY_HOLDER_MAX_SIZE: Option<usize> = None
Maximum size of the PLAIN_CDR2-BE KeyHolder stream in bytes
(XTypes 1.3 §7.6.8.4 step 5).
None = not keyed or unbounded
(MD5 path). Some(n) with n <= 16 = zero-pad path.Source§const IS_NESTED: bool = false
const IS_NESTED: bool = false
true if the type is annotated with @nested (XTypes 1.3
§7.4.6.3.5). Nested types are only intended as members of other
types and MUST NOT be registered as a DDS topic type.
DomainParticipant::create_topic rejects registration of
nested types with PreconditionNotMet.Source§const TYPE_IDENTIFIER: TypeIdentifier = zerodds_types::TypeIdentifier::None
const TYPE_IDENTIFIER: TypeIdentifier = zerodds_types::TypeIdentifier::None
XTypes 1.3 §7.3.4.2 — TypeIdentifier of the type for
XTypes-aware discovery + compatibility matching. Default
TypeIdentifier::None signals “type-id not provided;
reader-writer matching falls back to plain type_name
comparison (DDS 1.4 §2.2.3 default path)”. Read moreSource§fn encode_be(&self, out: &mut Vec<u8>) -> Result<(), EncodeError>
fn encode_be(&self, out: &mut Vec<u8>) -> Result<(), EncodeError>
Big-endian variant of
Self::encode. The default
implementation delegates to Self::encode (no byte swap),
since a generic BE re-encode is not possible without type
reflection. Codegen overrides this for structures that should
genuinely go on the wire as BE. Spec: zerodds-xcdr2-rust §2.4. Read moreSource§fn decode_be(bytes: &[u8]) -> Result<Self, DecodeError>
fn decode_be(bytes: &[u8]) -> Result<Self, DecodeError>
Big-endian variant of
Self::decode — for a payload whose
encapsulation header declared a big-endian representation identifier
(CDR_BE = 0x0000, PL_CDR_BE = 0x0002, CDR2_BE = 0x0006,
D_CDR2_BE = 0x0008, PL_CDR2_BE = 0x000a). The default implementation
delegates to Self::decode (little-endian) so pre-decode_be codegen
keeps working on the canonical wire; idl-rust codegen overrides this to
build a big-endian reader. Symmetric to Self::encode_be. Spec:
zerodds-xcdr2-rust §2.4; RTPS 2.5 §10.5. Read moreSource§fn encode_xcdr1(&self, out: &mut Vec<u8>) -> Result<(), EncodeError>
fn encode_xcdr1(&self, out: &mut Vec<u8>) -> Result<(), EncodeError>
Serializes as classic CDR / XCDR1 little-endian (representation
CDR_LE = 0x0001, max-alignment 8, no DHEADER on @final/@appendable,
PL_CDR1 for @mutable). This is the encoding Cyclone DDS carries in an
iceoryx PSMX chunk for a serialized sample, so the iceoryx-cyclone
bridge uses it for cross-vendor same-host interop. The default delegates
to Self::encode (XCDR2) — correct only for types whose XCDR1 and
XCDR2 byte streams coincide (no 8-byte members, @final, no @mutable);
idl-rust codegen overrides it with a true XCDR1 writer. Read moreSource§fn decode_xcdr1(bytes: &[u8]) -> Result<Self, DecodeError>
fn decode_xcdr1(bytes: &[u8]) -> Result<Self, DecodeError>
Deserializes a classic-CDR / XCDR1 little-endian payload. Symmetric to
Self::encode_xcdr1; the default delegates to Self::decode and
idl-rust codegen overrides it with an XCDR1 reader. Read moreSource§fn decode_xcdr1_be(bytes: &[u8]) -> Result<Self, DecodeError>
fn decode_xcdr1_be(bytes: &[u8]) -> Result<Self, DecodeError>
Deserializes a classic-CDR / XCDR1 big-endian payload (encapsulation
CDR_BE = 0x0000 / PL_CDR_BE = 0x0002). The default delegates to
Self::decode_xcdr1 (little-endian) — correct for byte-order-agnostic
types and the common case (Cyclone/FastDDS/RTI emit XCDR1 little-endian);
idl-rust codegen overrides it with a true big-endian XCDR1 reader.
Symmetric to Self::decode_be for XCDR2. Read moreSource§fn field_value(&self, _path: &str) -> Option<Value>
fn field_value(&self, _path: &str) -> Option<Value>
Returns the value of a field path (dotted, e.g.
"a.b") as a
zerodds_sql_filter::Value for SQL filter evaluation in
QueryCondition / ContentFilteredTopic. Default: None (no field
reachable — the filter then denies every sample that contains a
field access). Read moreimpl Eq for ShapeType
impl StructuralPartialEq for ShapeType
Auto Trait Implementations§
impl Freeze for ShapeType
impl RefUnwindSafe for ShapeType
impl Send for ShapeType
impl Sync for ShapeType
impl Unpin for ShapeType
impl UnsafeUnpin for ShapeType
impl UnwindSafe for ShapeType
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more