diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-05-15 19:09:34 +0200 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-05-15 19:09:34 +0200 |
commit | a1cc3d2ff5f785372256856a33c5e4b0841cb12c (patch) | |
tree | dbaee23c2d439d6c6df4265fcdb57b66506bd396 | |
parent | b42cf760d3d72b814abf8b91a69ccb4ad2d06d89 (diff) |
deriver Serialize for structs where all fields are Serialize
-rw-r--r-- | src/lib.rs | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -7,10 +7,19 @@ pub fn derive_serialize(item: TokenStream) -> TokenStream { let ast: ItemStruct = parse(item).unwrap(); let name = ast.ident; + let serializers = ast.fields.iter().map(|field| { + let field_name = field.ident.as_ref().expect("should be a names struct"); + + quote!( + self.#field_name.serialize(w)?; + ) + }); + quote!( impl Serialize for #name { fn serialize<W: std::io::Write>(&self, w: &mut W) -> Result<()> { - w.write_all(&[42])?; + #(#serializers) * + Ok(()) } } |