Skip to main content

nros_std_msgs/msg/
char.rs

1// nros message type - pure Rust, no_std compatible
2// Package: std_msgs
3// Message: Char
4
5use nros_core::{Deserialize, RosMessage, Serialize};
6use nros_serdes::{CdrReader, CdrWriter, DeserError, SerError};
7
8/// Char message type
9#[derive(Debug, Clone, Default, PartialEq)]
10pub struct Char {
11    pub data: u8,
12}
13
14impl Serialize for Char {
15    fn serialize(&self, writer: &mut CdrWriter) -> Result<(), SerError> {
16        // phase-303 W4 (#0267) — DHEADER wrap for XCDR2 appendable structs.
17        // No-op under XCDR1 (byte-identical); under XCDR2 delimits this struct.
18        let __dh = writer.begin_dheader()?;
19        writer.write_u8(self.data)?;
20        writer.end_dheader(__dh)?;
21        Ok(())
22    }
23}
24
25impl Deserialize for Char {
26    fn deserialize(reader: &mut CdrReader) -> Result<Self, DeserError> {
27        // phase-303 W4 (#0267) — read the XCDR2 DHEADER (no-op under XCDR1);
28        // end_dheader skips any unknown trailing members (forward compat).
29        let __dh = reader.begin_dheader()?;
30        let __value = Self {
31            data: reader.read_u8()?,
32        };
33        reader.end_dheader(__dh)?;
34        Ok(__value)
35    }
36}
37
38impl RosMessage for Char {
39    const TYPE_NAME: &'static str = "std_msgs::msg::dds_::Char_";
40    const TYPE_HASH: &'static str = "TypeHashNotSupported";
41    // Issue 1179 -- the type's bound on `RosMessage`, the one trait every
42    // backend's registration can read. Computed from the schema below, not
43    // copied, so it cannot drift from it.
44    const MAX_SERIALIZED_BOUND: Option<usize> = ::nros_serdes::size::max_serialized_bound::<Self>();
45}
46
47// ── nros_serdes::Message — runtime field schema ─────────────────────────────
48// Consumed by RMW backends that build wire-type descriptors at runtime
49// (Cyclone DDS dynamic types, …) without per-RMW codegen at compile time.
50
51impl ::nros_serdes::Message for Char {
52    const TYPE_NAME: &'static str = "std_msgs/msg/Char";
53    const FIELDS: &'static [::nros_serdes::Field] = &[::nros_serdes::Field {
54        name: "data",
55        ty: ::nros_serdes::FieldType::Uint8,
56        offset: ::core::mem::offset_of!(Char, data),
57    }];
58}