Generates a Serialize trait implementation for a struct type.
Parameters
s: The struct type definition to generate the implementation for
Returns
A quoted code block containing the trait implementation
Example
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: