aboutsummaryrefslogtreecommitdiff
path: root/derive/src/network
diff options
context:
space:
mode:
authorMax Audron <me@audron.dev>2026-02-22 15:19:49 +0100
committerMax Audron <me@audron.dev>2026-02-22 15:19:49 +0100
commit9110ff85313ea9bf5ee93f60122ce5660accede2 (patch)
tree0c4b8553a63ae269475d380cb5f1b365498b6297 /derive/src/network
parentadd more git remotes (diff)
NetworkMap error handling
Diffstat (limited to '')
-rw-r--r--derive/src/network/list.rs4
-rw-r--r--derive/src/network/map.rs13
-rw-r--r--derive/src/network/maplist.rs22
-rw-r--r--derive/src/network/mod.rs14
4 files changed, 26 insertions, 27 deletions
diff --git a/derive/src/network/list.rs b/derive/src/network/list.rs
index f5eaef4..d1035c4 100644
--- a/derive/src/network/list.rs
+++ b/derive/src/network/list.rs
@@ -21,7 +21,7 @@ pub(crate) fn to(fields: &[NetworkField]) -> Vec<TokenStream> {
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() }
+ quote! { libquassel::message::NetworkMap::to_network_map(&self.#field_name)?.into() }
}
crate::network::NetworkRepr::None => quote! { self.#field_name.clone().into() },
};
@@ -88,7 +88,7 @@ pub(crate) fn from(fields: &[NetworkField]) -> Vec<TokenStream> {
super::NetworkRepr::Map => quote! {
#field_name: libquassel::message::NetworkMap::from_network_map(&mut {
#extract_inner
- }),
+ })?,
},
super::NetworkRepr::None => quote! {
#field_name: {
diff --git a/derive/src/network/map.rs b/derive/src/network/map.rs
index 1576c99..39d1cd8 100644
--- a/derive/src/network/map.rs
+++ b/derive/src/network/map.rs
@@ -18,10 +18,10 @@ 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).unwrap().into()
+ 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()
+ libquassel::message::NetworkMap::to_network_map(&self.#field_name)?.into()
},
crate::network::NetworkRepr::None => quote! {
self.#field_name.clone().into()
@@ -59,11 +59,11 @@ 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).unwrap(),
+ &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),
+ &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,
@@ -75,9 +75,8 @@ pub(crate) fn from(fields: &[NetworkField]) -> Vec<TokenStream> {
pub(crate) fn to_vec(_type_name: &Ident, _fields: &[NetworkField]) -> TokenStream {
quote! {
- self.iter().map(|item| {
- item.to_network_map().into()
- }).collect()
+ let res: Vec<libquassel::primitive::VariantMap> = self.iter().map(|item| { item.to_network_map() }).collect::<crate::Result<Vec<libquassel::primitive::VariantMap>>>()?;
+ Ok(res.into_iter().map(|item| item.into()).collect())
}
}
diff --git a/derive/src/network/maplist.rs b/derive/src/network/maplist.rs
index 47b3ff2..bf86c75 100644
--- a/derive/src/network/maplist.rs
+++ b/derive/src/network/maplist.rs
@@ -19,10 +19,10 @@ 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().unwrap().into()
+ self.#field_name.to_network_list()?.into()
},
crate::network::NetworkRepr::Map => quote! {
- self.#field_name.to_network_map().into()
+ self.#field_name.to_network_map()?.into()
},
crate::network::NetworkRepr::None => quote! {
self.#field_name.clone().into()
@@ -73,10 +73,10 @@ 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().unwrap().into()
+ item.#field_name.to_network_list()?.into()
},
crate::network::NetworkRepr::Map => quote! {
- item.#field_name.to_network_map().into()
+ item.#field_name.to_network_map()?.into()
},
crate::network::NetworkRepr::None => quote! {
item.#field_name.clone().into()
@@ -121,13 +121,13 @@ pub(crate) fn to_vec(_type_name: &Ident, fields: &[NetworkField]) -> TokenStream
let mut map = libquassel::primitive::VariantMap::new();
- self.iter().for_each(|item| {
+ for item in self.iter() {
#(#for_each_inner)*
- });
+ }
#(#map_inserts)*
- return map;
+ Ok(map)
}
}
@@ -150,10 +150,10 @@ 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).unwrap()
+ libquassel::message::NetworkList::from_network_list(&mut std::convert::TryInto::try_into(input.remove(0)).#unwrap)?
},
super::NetworkRepr::Map => quote! {
- libquassel::message::NetworkMap::from_network_map(&mut std::convert::TryInto::try_into(input.remove(0)).#unwrap)
+ libquassel::message::NetworkMap::from_network_map(&mut std::convert::TryInto::try_into(input.remove(0)).#unwrap)?
},
super::NetworkRepr::None => quote! {
std::convert::TryInto::try_into(input.remove(0)).#unwrap
@@ -194,7 +194,7 @@ pub(crate) fn from_vec(type_name: &Ident, fields: &[NetworkField]) -> TokenStrea
};
let inner = quote! {
- #type_name::from_network_map(input)
+ #type_name::from_network_map(input)?
};
quote! {
@@ -205,6 +205,6 @@ pub(crate) fn from_vec(type_name: &Ident, fields: &[NetworkField]) -> TokenStrea
res.push(#inner);
}
- return res;
+ Ok(res)
}
}
diff --git a/derive/src/network/mod.rs b/derive/src/network/mod.rs
index 1fd50bd..a4f6c72 100644
--- a/derive/src/network/mod.rs
+++ b/derive/src/network/mod.rs
@@ -114,19 +114,19 @@ pub fn network_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
impl libquassel::message::signalproxy::NetworkMap for #name {
type Item = libquassel::primitive::VariantMap;
- fn to_network_map(&self) -> libquassel::primitive::VariantMap {
+ fn to_network_map(&self) -> crate::Result<libquassel::primitive::VariantMap> {
let mut res = libquassel::primitive::VariantMap::new();
#(#to_network_map)*
- return res;
+ Ok(res)
}
- fn from_network_map(input: &mut libquassel::primitive::VariantMap) -> Self {
+ fn from_network_map(input: &mut libquassel::primitive::VariantMap) -> crate::Result<Self> {
log::trace!("converting {} from network object: {:#?}", #name_str, input);
- Self {
+ Ok(Self {
#(#from_network_map)*
- }
+ })
}
}
};
@@ -153,11 +153,11 @@ pub fn network_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
impl libquassel::message::signalproxy::NetworkMap for Vec<#name> {
type Item = #network_map_vec_item;
- fn to_network_map(&self) -> Self::Item {
+ fn to_network_map(&self) -> crate::Result<Self::Item> {
#to_network_map_vec
}
- fn from_network_map(input: &mut Self::Item) -> Self {
+ fn from_network_map(input: &mut Self::Item) -> crate::Result<Self> {
#from_network_map_vec
}
}