pub trait Serialize {
// Required methods
fn serialize<Buffer>(
&self,
buffer: &mut Buffer,
) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized;
fn size(&self) -> Option<usize>;
// Provided method
fn to_bytes(&self) -> Result<Bytes, SerializeError> { ... }
}Expand description
Serialize according to the SOME/IP on-wire format.
Required Methods§
Sourcefn serialize<Buffer>(
&self,
buffer: &mut Buffer,
) -> Result<usize, SerializeError>
fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
Serializes self into the given buffer.
Returns the length of the serialized data.
§Errors
Returns a SerializeError if the serialization fails. Some data may still be written to
the buffer if an error occurs.
§Panics
Panics if the buffer doesn’t have enough capacity for the serialized type. It’s advised to
ensure that the buffer has at least Serialize::size capacity.
§Examples
use rsomeip_bytes::Serialize;
let mut buffer = [0_u8; 4];
let size = 0x1234_5678_u32.serialize(&mut buffer.as_mut_slice())?;
assert_eq!(size, 4);
assert_eq!(buffer.as_slice(), [0x12_u8, 0x34, 0x56, 0x78].as_slice());§Implementation notes
Care should be taken so that the serialized data matches the interface definition and that it’s compatible with the SOME/IP on-wire format to prevent issues during deserialization.
Sourcefn size(&self) -> Option<usize>
fn size(&self) -> Option<usize>
Returns the size of self when serialized.
Returns None if the size is out of bounds.
This method is suitable for calculating the value of a length field or the capacity of a
buffer prior to serializing self.
§Examples
use rsomeip_bytes::Serialize as _;
assert_eq!(1_u8.size(), Some(1));
assert_eq!(1_u16.size(), Some(2));
assert_eq!(1_u32.size(), Some(4));§Implementation notes
Care should be taken so that the output of this method exactly matches the output of the
serialize method.
Provided Methods§
Sourcefn to_bytes(&self) -> Result<Bytes, SerializeError>
fn to_bytes(&self) -> Result<Bytes, SerializeError>
Returns self serialized into Bytes.
§Errors
Returns a SerializeError if the serialization fails.
§Examples
use rsomeip_bytes::Serialize;
let bytes = 0x1234_5678_u32.to_bytes()?;
assert_eq!(bytes, [0x12_u8, 0x34, 0x56, 0x78].as_slice());Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
Source§impl Serialize for f32
impl Serialize for f32
Source§fn serialize<Buffer>(
&self,
buffer: &mut Buffer,
) -> Result<usize, SerializeError>
fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
Serializes self into the given buffer.
Returns the length of the serialized data.
§Panics
Panics if buffer doesn’t have enough capacity for self.
Source§impl Serialize for f64
impl Serialize for f64
Source§fn serialize<Buffer>(
&self,
buffer: &mut Buffer,
) -> Result<usize, SerializeError>
fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
Serializes self into the given buffer.
Returns the length of the serialized data.
§Panics
Panics if buffer doesn’t have enough capacity for self.
Source§impl Serialize for i8
impl Serialize for i8
Source§fn serialize<Buffer>(
&self,
buffer: &mut Buffer,
) -> Result<usize, SerializeError>
fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
Serializes self into the given buffer.
Returns the length of the serialized data.
§Panics
Panics if buffer doesn’t have enough capacity for self.
Source§impl Serialize for i16
impl Serialize for i16
Source§fn serialize<Buffer>(
&self,
buffer: &mut Buffer,
) -> Result<usize, SerializeError>
fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
Serializes self into the given buffer.
Returns the length of the serialized data.
§Panics
Panics if buffer doesn’t have enough capacity for self.
Source§impl Serialize for i32
impl Serialize for i32
Source§fn serialize<Buffer>(
&self,
buffer: &mut Buffer,
) -> Result<usize, SerializeError>
fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
Serializes self into the given buffer.
Returns the length of the serialized data.
§Panics
Panics if buffer doesn’t have enough capacity for self.
Source§impl Serialize for i64
impl Serialize for i64
Source§fn serialize<Buffer>(
&self,
buffer: &mut Buffer,
) -> Result<usize, SerializeError>
fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
Serializes self into the given buffer.
Returns the length of the serialized data.
§Panics
Panics if buffer doesn’t have enough capacity for self.
Source§impl Serialize for u8
impl Serialize for u8
Source§fn serialize<Buffer>(
&self,
buffer: &mut Buffer,
) -> Result<usize, SerializeError>
fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
Serializes self into the given buffer.
Returns the length of the serialized data.
§Panics
Panics if buffer doesn’t have enough capacity for self.
Source§impl Serialize for u16
impl Serialize for u16
Source§fn serialize<Buffer>(
&self,
buffer: &mut Buffer,
) -> Result<usize, SerializeError>
fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
Serializes self into the given buffer.
Returns the length of the serialized data.
§Panics
Panics if buffer doesn’t have enough capacity for self.
Source§impl Serialize for u32
impl Serialize for u32
Source§fn serialize<Buffer>(
&self,
buffer: &mut Buffer,
) -> Result<usize, SerializeError>
fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
Serializes self into the given buffer.
Returns the length of the serialized data.
§Panics
Panics if buffer doesn’t have enough capacity for self.
Source§impl Serialize for u64
impl Serialize for u64
Source§fn serialize<Buffer>(
&self,
buffer: &mut Buffer,
) -> Result<usize, SerializeError>
fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
Serializes self into the given buffer.
Returns the length of the serialized data.
§Panics
Panics if buffer doesn’t have enough capacity for self.