pub comptime fn derive_serialize(s: TypeDefinition) -> Quoted
Generates a Serialize trait implementation for a struct type.
Serialize
s
A quoted code block containing the trait implementation
For a struct defined as:
struct Log<N> { fields: [Field; N], length: u32 }
This function generates code equivalent to:
impl<let N: u32> Serialize for Log<N> { let N: u32 = <[Field; N] as Serialize>::N + <u32 as Serialize>::N; #[inline_always] fn serialize(self) -> [Field; Self::N] { let mut serialized_params = [0; _]; let mut offset = 0; let serialized_member = Serialize::serialize(self.fields); let serialized_member_len = <[Field; N] as Serialize>::N; for i in 0..serialized_member_len { serialized_params[i + offset] = serialized_member[i]; } offset += serialized_member_len; let serialized_member = Serialize::serialize(self.length); let serialized_member_len = <u32 as Serialize>::N; for i in 0..serialized_member_len { serialized_params[i + offset] = serialized_member[i]; } offset += serialized_member_len; serialized_params } }
Generates a
Serializetrait implementation for a struct type.Parameters
s: The struct type definition to generate the implementation forReturns
A quoted code block containing the trait implementation
Example
For a struct defined as:
This function generates code equivalent to: