Derive Macro Serialize

#[derive(Serialize)]
Expand description

Derives implementation of the Serialize trait.

use veecle_os_data_support_someip::serialize::{Serialize, SerializeExt};

#[derive(Debug, PartialEq, Serialize)]
struct SomeIpStruct {
    foo: u16,
    bar: u32,
}

let input = SomeIpStruct {
    foo: 6,
    bar: 0x1020304,
};
let bytes = &[0x0, 0x6, 0x1, 0x2, 0x3, 0x4];

let mut buffer = [0u8; 16];
let output = input.serialize(&mut buffer).unwrap();

assert_eq!(output, bytes);

Zero sized types and tuple structs can be derived as well.

use veecle_os_data_support_someip::serialize::Serialize;

#[derive(Serialize)]
struct Zst;

#[derive(Serialize)]
struct TupleStruct(u32, u16);

It cannot be derived for enums or unions.

use veecle_os_data_support_someip::serialize::{Serialize};

#[derive(Serialize)]
enum Bad {}

#[derive(Serialize)]
union AlsoBad {
  foo: u8,
  bar: u8,
}