diff options
Diffstat (limited to 'ebml_derive/src')
-rw-r--r-- | ebml_derive/src/lib.rs | 7 |
1 files changed, 7 insertions, 0 deletions
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::<Vec<_>>(); + let size_match = tags + .iter() + .map(|Tag { name, .. }| quote! { Self::#name(v) => v.size() }) + .collect::<Vec<_>>(); 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<u8>) -> crate::Result<()> { match self { #(#write_match),* } } + pub fn size(&self) -> usize { + match self { #(#size_match),* } + } } } .into() |