diff options
author | metamuffin <metamuffin@disroot.org> | 2024-01-26 15:51:04 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-01-26 15:51:04 +0100 |
commit | e4d4b62178a1f83b4c9632b4fd8b2dcd2eef1bd9 (patch) | |
tree | 7f4d8538a7f6992eda45b255fe68e82f3a9af788 /ebml_derive | |
parent | e63d873ac0e47eb49dfb10d6cf607fa9c7bd6e27 (diff) | |
download | jellything-e4d4b62178a1f83b4c9632b4fd8b2dcd2eef1bd9.tar jellything-e4d4b62178a1f83b4c9632b4fd8b2dcd2eef1bd9.tar.bz2 jellything-e4d4b62178a1f83b4c9632b4fd8b2dcd2eef1bd9.tar.zst |
less useless copying in the matroska library
Diffstat (limited to 'ebml_derive')
-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() |