veecle_os_data_support_someip/
serialize_impl.rs

1//! Implementation of [`Serialize`] for various data types.
2
3use crate::serialize::{ByteWriter, Serialize, SerializeError};
4
5impl Serialize for bool {
6    fn required_length(&self) -> usize {
7        1
8    }
9
10    fn serialize_partial(&self, byte_writer: &mut ByteWriter) -> Result<(), SerializeError> {
11        byte_writer.write_byte(match self {
12            true => 1,
13            false => 0,
14        })
15    }
16}
17
18macro_rules! impl_for_numeric {
19    ($ty:ident) => {
20        impl Serialize for $ty {
21            fn required_length(&self) -> usize {
22                core::mem::size_of::<Self>()
23            }
24
25            fn serialize_partial(
26                &self,
27                byte_writer: &mut ByteWriter,
28            ) -> Result<(), SerializeError> {
29                byte_writer.write_slice(&self.to_be_bytes())
30            }
31        }
32    };
33}
34
35impl_for_numeric!(u8);
36impl_for_numeric!(u16);
37impl_for_numeric!(u32);
38impl_for_numeric!(u64);
39
40impl_for_numeric!(i8);
41impl_for_numeric!(i16);
42impl_for_numeric!(i32);
43impl_for_numeric!(i64);
44
45impl_for_numeric!(f32);
46impl_for_numeric!(f64);