From a130eee7a71996f9ae50502c477a2c6494b78a83 Mon Sep 17 00:00:00 2001 From: Max Audron Date: Wed, 26 Feb 2025 22:52:16 +0100 Subject: implement NetworkId UserType --- derive/src/network/map.rs | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) (limited to 'derive/src/network/map.rs') diff --git a/derive/src/network/map.rs b/derive/src/network/map.rs index 0550ccb..4efc3bf 100644 --- a/derive/src/network/map.rs +++ b/derive/src/network/map.rs @@ -45,29 +45,29 @@ pub(crate) fn from(fields: &Vec) -> Vec { .map(|field| { let field_name = field.ident.as_ref().unwrap(); - if field.default { - quote! { - #field_name: Default::default(), - } + let unwrap = if field.default { + quote! { unwrap_or_default() } } else { - let field_rename = match &field.rename { - Some(name) => name.clone(), - None => format!("{}", field.ident.as_ref().unwrap()).into(), - }; + quote! { unwrap() } + }; - match field.network { - super::NetworkRepr::List => quote! { - #field_name: libquassel::message::NetworkList::from_network_list( - &mut std::convert::TryInto::try_into(input.remove(#field_rename).unwrap()).unwrap()), - }, - super::NetworkRepr::Map => quote! { - #field_name: libquassel::message::NetworkMap::from_network_map( - &mut std::convert::TryInto::try_into(input.remove(#field_rename).unwrap()).unwrap()), - }, - super::NetworkRepr::None => quote! { - #field_name: std::convert::TryInto::try_into(input.remove(#field_rename).unwrap()).unwrap(), - }, - } + let field_rename = match &field.rename { + Some(name) => name.clone(), + None => format!("{}", field.ident.as_ref().unwrap()).into(), + }; + + match field.network { + super::NetworkRepr::List => quote! { + #field_name: libquassel::message::NetworkList::from_network_list( + &mut std::convert::TryInto::try_into(input.remove(#field_rename).unwrap()).#unwrap), + }, + super::NetworkRepr::Map => quote! { + #field_name: libquassel::message::NetworkMap::from_network_map( + &mut std::convert::TryInto::try_into(input.remove(#field_rename).unwrap()).#unwrap), + }, + super::NetworkRepr::None => quote! { + #field_name: std::convert::TryInto::try_into(input.remove(#field_rename).unwrap()).#unwrap, + }, } }) .collect() -- cgit v1.2.3