diff options
| author | Max Audron <me@audron.dev> | 2026-02-22 14:06:16 +0100 |
|---|---|---|
| committer | Max Audron <me@audron.dev> | 2026-02-22 14:06:16 +0100 |
| commit | 024eb3df4a0786a92033baea123aa779998cdc28 (patch) | |
| tree | 412670a982455cb3351c199b7df21b0b22f3a36e /derive/src/network | |
| parent | Syncable trait error handling (diff) | |
NetworkList and signalproxy objects error handling
Diffstat (limited to 'derive/src/network')
| -rw-r--r-- | derive/src/network/list.rs | 6 | ||||
| -rw-r--r-- | derive/src/network/map.rs | 4 | ||||
| -rw-r--r-- | derive/src/network/maplist.rs | 6 | ||||
| -rw-r--r-- | derive/src/network/mod.rs | 10 |
4 files changed, 13 insertions, 13 deletions
diff --git a/derive/src/network/list.rs b/derive/src/network/list.rs index e0bbfa8..f5eaef4 100644 --- a/derive/src/network/list.rs +++ b/derive/src/network/list.rs @@ -18,7 +18,7 @@ pub(crate) fn to(fields: &[NetworkField]) -> Vec<TokenStream> { let field_inner = match field.network { crate::network::NetworkRepr::List => { - quote! { libquassel::message::NetworkList::to_network_list(&self.#field_name).into() } + quote! { libquassel::message::NetworkList::to_network_list(&self.#field_name)?.into() } } crate::network::NetworkRepr::Map => { quote! { libquassel::message::NetworkMap::to_network_map(&self.#field_name).into() } @@ -55,7 +55,7 @@ pub(crate) fn from(fields: &[NetworkField]) -> Vec<TokenStream> { let mut i = input.iter(); match i.position(|x| *x == libquassel::primitive::Variant::ByteArray(String::from(#field_rename))) { Some(_) => { - match i.next().expect("failed to get next field") { + match i.next().ok_or_else(|| crate::ProtocolError::MissingField(#field_rename.to_string()))? { libquassel::primitive::Variant::#field_variant_type(var) => var .clone() .try_into() @@ -83,7 +83,7 @@ pub(crate) fn from(fields: &[NetworkField]) -> Vec<TokenStream> { 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 { diff --git a/derive/src/network/map.rs b/derive/src/network/map.rs index ead71c7..1576c99 100644 --- a/derive/src/network/map.rs +++ b/derive/src/network/map.rs @@ -18,7 +18,7 @@ pub(crate) fn to(fields: &[NetworkField]) -> Vec<TokenStream> { let field_inner = match field.network { crate::network::NetworkRepr::List => quote! { - libquassel::message::NetworkList::to_network_list(&self.#field_name).into() + libquassel::message::NetworkList::to_network_list(&self.#field_name).unwrap().into() }, crate::network::NetworkRepr::Map => quote! { libquassel::message::NetworkMap::to_network_map(&self.#field_name).into() @@ -59,7 +59,7 @@ pub(crate) fn from(fields: &[NetworkField]) -> Vec<TokenStream> { 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), + &mut std::convert::TryInto::try_into(input.remove(#field_rename).unwrap()).#unwrap).unwrap(), }, super::NetworkRepr::Map => quote! { #field_name: libquassel::message::NetworkMap::from_network_map( diff --git a/derive/src/network/maplist.rs b/derive/src/network/maplist.rs index 21ea524..47b3ff2 100644 --- a/derive/src/network/maplist.rs +++ b/derive/src/network/maplist.rs @@ -19,7 +19,7 @@ pub(crate) fn to(fields: &[NetworkField]) -> Vec<TokenStream> { let field_inner = match field.network { crate::network::NetworkRepr::List => quote! { - self.#field_name.to_network_list().into() + self.#field_name.to_network_list().unwrap().into() }, crate::network::NetworkRepr::Map => quote! { self.#field_name.to_network_map().into() @@ -73,7 +73,7 @@ pub(crate) fn to_vec(_type_name: &Ident, fields: &[NetworkField]) -> TokenStream let field_inner = match field.network { crate::network::NetworkRepr::List => quote! { - item.#field_name.to_network_list().into() + item.#field_name.to_network_list().unwrap().into() }, crate::network::NetworkRepr::Map => quote! { item.#field_name.to_network_map().into() @@ -150,7 +150,7 @@ pub(crate) fn from(fields: &[NetworkField]) -> Vec<TokenStream> { let field_inner = match field.network { super::NetworkRepr::List => quote! { - libquassel::message::NetworkList::from_network_list(&mut std::convert::TryInto::try_into(input.remove(0)).#unwrap) + libquassel::message::NetworkList::from_network_list(&mut std::convert::TryInto::try_into(input.remove(0)).#unwrap).unwrap() }, super::NetworkRepr::Map => quote! { libquassel::message::NetworkMap::from_network_map(&mut std::convert::TryInto::try_into(input.remove(0)).#unwrap) diff --git a/derive/src/network/mod.rs b/derive/src/network/mod.rs index f2ead96..1fd50bd 100644 --- a/derive/src/network/mod.rs +++ b/derive/src/network/mod.rs @@ -190,19 +190,19 @@ pub fn network_list(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let gen = quote! { impl libquassel::message::signalproxy::NetworkList for #name { - fn to_network_list(&self) -> libquassel::primitive::VariantList { + fn to_network_list(&self) -> crate::Result<libquassel::primitive::VariantList> { let mut res = libquassel::primitive::VariantList::new(); #(#to_network_list)* - return res; + Ok(res) } - fn from_network_list(input: &mut libquassel::primitive::VariantList) -> Self { + fn from_network_list(input: &mut libquassel::primitive::VariantList) -> crate::Result<Self> { log::trace!("converting {} from network object: {:#?}", #name_str, input); - Self { + Ok(Self { #(#from_network_list)* - } + }) } } }; |
