diff options
| author | Max Audron <me@audron.dev> | 2026-02-22 18:00:41 +0100 |
|---|---|---|
| committer | Max Audron <me@audron.dev> | 2026-02-22 18:00:41 +0100 |
| commit | cae6008c036a4fe690ef1b87d0c953fd05d9d4a6 (patch) | |
| tree | a201ef89c87d2e8774b21a515031b0330f23f3ba /derive/src/network/list.rs | |
| parent | improve network from_network_list impl (diff) | |
we do not need to reference stuff here and can just consume it
Diffstat (limited to 'derive/src/network/list.rs')
| -rw-r--r-- | derive/src/network/list.rs | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/derive/src/network/list.rs b/derive/src/network/list.rs index d1035c4..4da958c 100644 --- a/derive/src/network/list.rs +++ b/derive/src/network/list.rs @@ -36,66 +36,3 @@ pub(crate) fn to(fields: &[NetworkField]) -> Vec<TokenStream> { }) .collect() } - -pub(crate) fn from(fields: &[NetworkField]) -> Vec<TokenStream> { - fields - .iter() - .map(|field| { - let field_name = field.ident.as_ref().unwrap(); - - let field_rename = match &field.rename { - Some(name) => name.clone(), - None => format!("{}", field.ident.as_ref().unwrap()), - }; - - let field_variant_type = get_field_variant_type(field); - - let extract_inner = if field.default { - quote! { - let mut i = input.iter(); - match i.position(|x| *x == libquassel::primitive::Variant::ByteArray(String::from(#field_rename))) { - Some(_) => { - match i.next().ok_or_else(|| crate::ProtocolError::MissingField(#field_rename.to_string()))? { - libquassel::primitive::Variant::#field_variant_type(var) => var - .clone() - .try_into() - .unwrap_or(Default::default()), - _ => Default::default(), - } - } - None => Default::default(), - } - } - } else { - quote! { - let mut i = input.iter(); - i.position(|x| *x == libquassel::primitive::Variant::ByteArray(String::from(#field_rename))) - .expect(format!("failed to get field {}", #field_rename).as_str()); - - match i.next().expect("failed to get next field") { - libquassel::primitive::Variant::#field_variant_type(var) => var.clone().try_into().unwrap(), - _ => panic!("network::list::from: wrong variant type"), - } - } - }; - - match field.network { - super::NetworkRepr::List => quote! { - #field_name: libquassel::message::NetworkList::from_network_list(&mut { - #extract_inner - })?, - }, - super::NetworkRepr::Map => quote! { - #field_name: libquassel::message::NetworkMap::from_network_map(&mut { - #extract_inner - })?, - }, - super::NetworkRepr::None => quote! { - #field_name: { - #extract_inner - }, - }, - } - }) - .collect() -} |
