MCPcopy Create free account
hub / github.com/Slowerzs/PPLSystem / bytes_size

Function bytes_size

endian_codec/endian_codec_derive/src/lib.rs:56–97  ·  view source on GitHub ↗
(data: &Data)

Source from the content-addressed store, hash-verified

54}
55
56fn bytes_size(data: &Data) -> TokenStream {
57 match *data {
58 Data::Struct(ref data) => {
59 match data.fields {
60 Fields::Named(ref fields) => {
61 // Expands to an expression like
62 //
63 // 0 + <self.x as PackedSize>::PACKED_LEN + <self.y as PackedSize>::PACKED_LEN
64 let recurse = fields.named.iter().map(|f| {
65 let ty = &f.ty;
66 quote_spanned! {f.span()=>
67 <#ty as PackedSize>::PACKED_LEN
68 }
69 });
70
71 quote! {
72 0 #(+ #recurse)*
73 }
74 }
75 Fields::Unnamed(ref fields) => {
76 // Expands to an expression like
77 //
78 // 0 + <self.0 as PackedSize>::PACKED_LEN + <self.1 as PackedSize>::PACKED_LEN
79 let recurse = fields.unnamed.iter().map(|f| {
80 let ty = &f.ty;
81 quote_spanned! {f.span()=>
82 <#ty as PackedSize>::PACKED_LEN
83 }
84 });
85 quote! {
86 0 #(+ #recurse)*
87 }
88 }
89 Fields::Unit => {
90 // Unit structs cannot own more than 0 bytes of heap memory.
91 quote!(0)
92 }
93 }
94 }
95 Data::Enum(_) | Data::Union(_) => unimplemented!(),
96 }
97}
98
99#[proc_macro_derive(EncodeLE)]
100pub fn derive_endian_ser_bytes(input: proc_macro::TokenStream) -> proc_macro::TokenStream {

Callers 1

derive_endian_sizeFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected