diff --git a/instant-xml-macros/src/de.rs b/instant-xml-macros/src/de.rs index f52b33c..bb31127 100644 --- a/instant-xml-macros/src/de.rs +++ b/instant-xml-macros/src/de.rs @@ -259,7 +259,7 @@ impl Deserializer { tokens.match_.extend(quote!( __Elements::#enum_name => { if #enum_name.is_some() { - panic!("duplicated value"); + return Err(Error::DuplicateValue); } let mut nested = deserializer.nested(data); @@ -270,7 +270,7 @@ impl Deserializer { tokens.match_.extend(quote!( __Attributes::#enum_name => { if #enum_name.is_some() { - panic!("duplicated value"); + return Err(Error::DuplicateValue); } let mut nested = deserializer.for_attr(attr); diff --git a/instant-xml/src/lib.rs b/instant-xml/src/lib.rs index 8ba4cbf..9738c36 100644 --- a/instant-xml/src/lib.rs +++ b/instant-xml/src/lib.rs @@ -90,4 +90,6 @@ pub enum Error { ExpectedScalar, #[error("wrong namespace")] WrongNamespace, + #[error("duplicate value")] + DuplicateValue, }