Skip to main content

Serialize

Trait Serialize 

Source
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§

Source

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

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.

Source

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§

Source

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 bool

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl Serialize for f32

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

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§

fn size(&self) -> Option<usize>

Returns the size of self when serialized.

Never returns None.

Source§

impl Serialize for f64

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

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§

fn size(&self) -> Option<usize>

Returns the size of self when serialized.

Never returns None.

Source§

impl Serialize for i8

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

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§

fn size(&self) -> Option<usize>

Returns the size of self when serialized.

Never returns None.

Source§

impl Serialize for i16

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

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§

fn size(&self) -> Option<usize>

Returns the size of self when serialized.

Never returns None.

Source§

impl Serialize for i32

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

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§

fn size(&self) -> Option<usize>

Returns the size of self when serialized.

Never returns None.

Source§

impl Serialize for i64

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

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§

fn size(&self) -> Option<usize>

Returns the size of self when serialized.

Never returns None.

Source§

impl Serialize for u8

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

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§

fn size(&self) -> Option<usize>

Returns the size of self when serialized.

Never returns None.

Source§

impl Serialize for u16

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

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§

fn size(&self) -> Option<usize>

Returns the size of self when serialized.

Never returns None.

Source§

impl Serialize for u32

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

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§

fn size(&self) -> Option<usize>

Returns the size of self when serialized.

Never returns None.

Source§

impl Serialize for u64

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

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§

fn size(&self) -> Option<usize>

Returns the size of self when serialized.

Never returns None.

Source§

impl<A: Serialize, B: Serialize, C: Serialize, D: Serialize, E: Serialize, F: Serialize, G: Serialize, H: Serialize, I: Serialize, J: Serialize, K: Serialize, L: Serialize> Serialize for (A, B, C, D, E, F, G, H, I, J, K, L)

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<A: Serialize, B: Serialize, C: Serialize, D: Serialize, E: Serialize, F: Serialize, G: Serialize, H: Serialize, I: Serialize, J: Serialize, K: Serialize> Serialize for (A, B, C, D, E, F, G, H, I, J, K)

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<A: Serialize, B: Serialize, C: Serialize, D: Serialize, E: Serialize, F: Serialize, G: Serialize, H: Serialize, I: Serialize, J: Serialize> Serialize for (A, B, C, D, E, F, G, H, I, J)

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<A: Serialize, B: Serialize, C: Serialize, D: Serialize, E: Serialize, F: Serialize, G: Serialize, H: Serialize, I: Serialize> Serialize for (A, B, C, D, E, F, G, H, I)

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<A: Serialize, B: Serialize, C: Serialize, D: Serialize, E: Serialize, F: Serialize, G: Serialize, H: Serialize> Serialize for (A, B, C, D, E, F, G, H)

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<A: Serialize, B: Serialize, C: Serialize, D: Serialize, E: Serialize, F: Serialize, G: Serialize> Serialize for (A, B, C, D, E, F, G)

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<A: Serialize, B: Serialize, C: Serialize, D: Serialize, E: Serialize, F: Serialize> Serialize for (A, B, C, D, E, F)

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<A: Serialize, B: Serialize, C: Serialize, D: Serialize, E: Serialize> Serialize for (A, B, C, D, E)

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<A: Serialize, B: Serialize, C: Serialize, D: Serialize> Serialize for (A, B, C, D)

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<A: Serialize, B: Serialize, C: Serialize> Serialize for (A, B, C)

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<A: Serialize, B: Serialize> Serialize for (A, B)

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<A: Serialize> Serialize for (A,)

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<T: Serialize + ?Sized> Serialize for &T

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<T: Serialize + ?Sized> Serialize for &mut T

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<T: Serialize + ?Sized> Serialize for Arc<T>

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<T: Serialize + ?Sized> Serialize for Box<T>

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<T: Serialize + ?Sized> Serialize for Rc<T>

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Source§

impl<T: Serialize, const N: usize> Serialize for [T; N]

Source§

fn serialize<Buffer>( &self, buffer: &mut Buffer, ) -> Result<usize, SerializeError>
where Buffer: BufMut + ?Sized,

Source§

fn size(&self) -> Option<usize>

Implementors§

Source§

impl Serialize for Bytes

Source§

impl<Encoding, Value, const N: usize> Serialize for StaticString<N, Encoding, Value>
where Encoding: Encoding, Value: AsRef<str>,

Source§

impl<Length, Collection> Serialize for DynamicArray<Length, Collection>
where Length: Length, Collection: IntoIterator + Copy, Collection::Item: Serialize,

Source§

impl<Length, Encoding, Value> Serialize for DynamicString<Length, Encoding, Value>
where Length: Length, Encoding: Encoding, Value: AsRef<str>,

Source§

impl<Length, Value> Serialize for SerializeWithLength<'_, Length, Value>
where Length: Length, Value: Serialize,

Source§

impl<Value, SerializeFn, SizeFn> Serialize for SerializeWithFn<'_, Value, SerializeFn, SizeFn>
where for<'any> SerializeFn: Fn(&Value, &mut dyn BufMut) -> Result<usize, SerializeError>, for<'any> SizeFn: Fn(&Value) -> Option<usize>,