From e4d4b62178a1f83b4c9632b4fd8b2dcd2eef1bd9 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 26 Jan 2024 15:51:04 +0100 Subject: less useless copying in the matroska library --- ebml_derive/src/lib.rs | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'ebml_derive/src') diff --git a/ebml_derive/src/lib.rs b/ebml_derive/src/lib.rs index cd2d194..34510b9 100644 --- a/ebml_derive/src/lib.rs +++ b/ebml_derive/src/lib.rs @@ -81,6 +81,10 @@ pub fn define_ebml(ts: TokenStream) -> TokenStream { .iter() .map(|Tag { name, .. }| quote! { Self::#name(v) => v.write_to(w) }) .collect::>(); + let size_match = tags + .iter() + .map(|Tag { name, .. }| quote! { Self::#name(v) => v.size() }) + .collect::>(); let cons_master_match = tags .iter() .filter_map( @@ -131,6 +135,9 @@ pub fn define_ebml(ts: TokenStream) -> TokenStream { pub fn write(&self, w: &mut Vec) -> crate::Result<()> { match self { #(#write_match),* } } + pub fn size(&self) -> usize { + match self { #(#size_match),* } + } } } .into() -- cgit v1.2.3-70-g09d2