Skip to content

Commit cdfb582

Browse files
JBYoshiJonathanWoollett-Light
authored andcommitted
Allow array lengths to be any expression
Signed-off-by: JBYoshi <[email protected]>
1 parent f0a7194 commit cdfb582

File tree

1 file changed

+3
-15
lines changed

1 file changed

+3
-15
lines changed

src/fields/struct_field.rs

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -127,19 +127,7 @@ impl StructField {
127127
_ => panic!("Unsupported array type."),
128128
}
129129

130-
match &array.len {
131-
syn::Expr::Lit(expr_lit) => match &expr_lit.lit {
132-
syn::Lit::Int(lit_int) => {
133-
let array_len: usize = lit_int.base10_parse().unwrap();
134-
self.generate_array_deserializer(array_type_token, array_len)
135-
}
136-
_ => panic!("Unsupported array len literal."),
137-
},
138-
syn::Expr::Path(expr_path) => {
139-
self.generate_array_deserializer(array_type_token, &expr_path.path)
140-
}
141-
_ => panic!("Unsupported array len expression."),
142-
}
130+
self.generate_array_deserializer(array_type_token, &array.len)
143131
}
144132
syn::Type::Path(_) => quote! {
145133
#field_ident: <#ty as Versionize>::deserialize(&mut reader, version_map, app_version)?,
@@ -151,10 +139,10 @@ impl StructField {
151139
}
152140
}
153141

154-
fn generate_array_deserializer<T: quote::ToTokens>(
142+
fn generate_array_deserializer(
155143
&self,
156144
array_type_token: syn::TypePath,
157-
array_len: T,
145+
array_len: &syn::Expr,
158146
) -> proc_macro2::TokenStream {
159147
let field_ident = format_ident!("{}", self.name);
160148

0 commit comments

Comments
 (0)