diff options
Diffstat (limited to 'derive/src/network/list.rs')
| -rw-r--r-- | derive/src/network/list.rs | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/derive/src/network/list.rs b/derive/src/network/list.rs index 75aecd0..8b1556e 100644 --- a/derive/src/network/list.rs +++ b/derive/src/network/list.rs @@ -1,7 +1,7 @@ use proc_macro2::TokenStream; use quote::quote; -use super::{gen_type, get_field_type, get_field_type_colon, get_field_variant_type, NetworkField}; +use super::{get_field_type, get_field_type_colon, get_field_variant_type, NetworkField}; pub(crate) fn to(fields: &Vec<NetworkField>) -> Vec<TokenStream> { fields @@ -13,7 +13,7 @@ pub(crate) fn to(fields: &Vec<NetworkField>) -> Vec<TokenStream> { }; let field_name = field.ident.as_ref().unwrap(); - let field_type = get_field_type(&field); + let field_type = get_field_variant_type(&field); let field_inner = if field.network { quote! { self.#field_name.to_network() } @@ -21,18 +21,9 @@ pub(crate) fn to(fields: &Vec<NetworkField>) -> Vec<TokenStream> { quote! { self.#field_name.clone() } }; - match &field.variant { - Some(variant_type) => { - let variant_type = gen_type(variant_type.as_str()); - quote! { - res.push(crate::primitive::Variant::ByteArray(#field_rename.to_string())); - res.push(crate::primitive::Variant::#variant_type(#field_inner)); - } - } - None => quote! { - res.push(crate::primitive::Variant::ByteArray(#field_rename.to_string())); - res.push(crate::primitive::Variant::#field_type(#field_inner)); - }, + quote! { + res.push(crate::primitive::Variant::ByteArray(#field_rename.to_string())); + res.push(crate::primitive::Variant::#field_type(#field_inner)); } }) .collect() @@ -57,10 +48,10 @@ pub(crate) fn from(fields: &Vec<NetworkField>) -> Vec<TokenStream> { let extract_inner = quote! { let mut i = input.iter(); i.position(|x| *x == crate::primitive::Variant::ByteArray(String::from(#field_rename))) - .unwrap(); + .expect(format!("failed to get field {}", #field_rename).as_str()); - match i.next().unwrap() { - crate::primitive::Variant::#field_variant_type(input) => input.clone(), + match i.next().expect("failed to get next field") { + crate::primitive::Variant::#field_variant_type(var) => var.clone(), _ => panic!("network::list::from: wrong variant type"), } }; |
