Provide more context in DuplicateValue errors
This commit is contained in:
parent
775bad82a4
commit
dfc5894edf
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "instant-xml-macros"
|
name = "instant-xml-macros"
|
||||||
version = "0.4.2"
|
version = "0.5.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.61"
|
rust-version = "1.61"
|
||||||
workspace = ".."
|
workspace = ".."
|
||||||
|
|
|
@ -94,7 +94,7 @@ fn deserialize_scalar_enum(
|
||||||
use ::instant_xml::Error;
|
use ::instant_xml::Error;
|
||||||
|
|
||||||
if into.is_some() {
|
if into.is_some() {
|
||||||
return Err(Error::DuplicateValue);
|
return Err(Error::DuplicateValue(field));
|
||||||
}
|
}
|
||||||
|
|
||||||
let cow_str = match deserializer.take_str()? {
|
let cow_str = match deserializer.take_str()? {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "instant-xml"
|
name = "instant-xml"
|
||||||
version = "0.4.0"
|
version = "0.5.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.61"
|
rust-version = "1.61"
|
||||||
workspace = ".."
|
workspace = ".."
|
||||||
|
@ -12,7 +12,7 @@ readme = "../README.md"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
chrono = { version = "0.4.23", optional = true }
|
chrono = { version = "0.4.23", optional = true }
|
||||||
macros = { package = "instant-xml-macros", version = "0.4.0", path = "../instant-xml-macros" }
|
macros = { package = "instant-xml-macros", version = "0.5.0", path = "../instant-xml-macros" }
|
||||||
thiserror = "1.0.29"
|
thiserror = "1.0.29"
|
||||||
xmlparser = "0.13.3"
|
xmlparser = "0.13.3"
|
||||||
|
|
||||||
|
|
|
@ -363,11 +363,11 @@ impl<'xml> Iterator for Context<'xml> {
|
||||||
|
|
||||||
pub fn borrow_cow_str<'a, 'xml: 'a>(
|
pub fn borrow_cow_str<'a, 'xml: 'a>(
|
||||||
into: &mut CowStrAccumulator<'xml, 'a>,
|
into: &mut CowStrAccumulator<'xml, 'a>,
|
||||||
_: &'static str,
|
field: &'static str,
|
||||||
deserializer: &mut Deserializer<'_, 'xml>,
|
deserializer: &mut Deserializer<'_, 'xml>,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
if into.inner.is_some() {
|
if into.inner.is_some() {
|
||||||
return Err(Error::DuplicateValue);
|
return Err(Error::DuplicateValue(field));
|
||||||
}
|
}
|
||||||
|
|
||||||
match deserializer.take_str()? {
|
match deserializer.take_str()? {
|
||||||
|
@ -381,11 +381,11 @@ pub fn borrow_cow_str<'a, 'xml: 'a>(
|
||||||
|
|
||||||
pub fn borrow_cow_slice_u8<'xml>(
|
pub fn borrow_cow_slice_u8<'xml>(
|
||||||
into: &mut Option<Cow<'xml, [u8]>>,
|
into: &mut Option<Cow<'xml, [u8]>>,
|
||||||
_: &'static str,
|
field: &'static str,
|
||||||
deserializer: &mut Deserializer<'_, 'xml>,
|
deserializer: &mut Deserializer<'_, 'xml>,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
if into.is_some() {
|
if into.is_some() {
|
||||||
return Err(Error::DuplicateValue);
|
return Err(Error::DuplicateValue(field));
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(value) = deserializer.take_str()? {
|
if let Some(value) = deserializer.take_str()? {
|
||||||
|
|
|
@ -13,11 +13,12 @@ use crate::{Accumulate, Deserializer, Error, FromXml, Id, Kind, Serializer, ToXm
|
||||||
// Deserializer
|
// Deserializer
|
||||||
|
|
||||||
pub fn from_xml_str<T: FromStr>(
|
pub fn from_xml_str<T: FromStr>(
|
||||||
deserializer: &mut Deserializer<'_, '_>,
|
|
||||||
into: &mut Option<T>,
|
into: &mut Option<T>,
|
||||||
|
field: &'static str,
|
||||||
|
deserializer: &mut Deserializer<'_, '_>,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
if into.is_some() {
|
if into.is_some() {
|
||||||
return Err(Error::DuplicateValue);
|
return Err(Error::DuplicateValue(field));
|
||||||
}
|
}
|
||||||
|
|
||||||
let value = match deserializer.take_str()? {
|
let value = match deserializer.take_str()? {
|
||||||
|
@ -54,7 +55,7 @@ impl<'xml, T: FromStr> FromXml<'xml> for FromXmlStr<T> {
|
||||||
deserializer: &mut Deserializer<'_, 'xml>,
|
deserializer: &mut Deserializer<'_, 'xml>,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
if into.is_some() {
|
if into.is_some() {
|
||||||
return Err(Error::DuplicateValue);
|
return Err(Error::DuplicateValue(field));
|
||||||
}
|
}
|
||||||
|
|
||||||
let value = match deserializer.take_str()? {
|
let value = match deserializer.take_str()? {
|
||||||
|
@ -93,7 +94,7 @@ impl<'xml> FromXml<'xml> for bool {
|
||||||
deserializer: &mut Deserializer<'cx, 'xml>,
|
deserializer: &mut Deserializer<'cx, 'xml>,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
if into.is_some() {
|
if into.is_some() {
|
||||||
return Err(Error::DuplicateValue);
|
return Err(Error::DuplicateValue(field));
|
||||||
}
|
}
|
||||||
|
|
||||||
let value = match deserializer.take_str()? {
|
let value = match deserializer.take_str()? {
|
||||||
|
@ -189,7 +190,7 @@ macro_rules! from_xml_for_number {
|
||||||
deserializer: &mut Deserializer<'cx, 'xml>,
|
deserializer: &mut Deserializer<'cx, 'xml>,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
if into.is_some() {
|
if into.is_some() {
|
||||||
return Err(Error::DuplicateValue);
|
return Err(Error::DuplicateValue(field));
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut value = None;
|
let mut value = None;
|
||||||
|
@ -235,7 +236,7 @@ impl<'xml> FromXml<'xml> for char {
|
||||||
deserializer: &mut Deserializer<'cx, 'xml>,
|
deserializer: &mut Deserializer<'cx, 'xml>,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
if into.is_some() {
|
if into.is_some() {
|
||||||
return Err(Error::DuplicateValue);
|
return Err(Error::DuplicateValue(field));
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut value = None;
|
let mut value = None;
|
||||||
|
@ -262,11 +263,11 @@ impl<'xml> FromXml<'xml> for String {
|
||||||
|
|
||||||
fn deserialize<'cx>(
|
fn deserialize<'cx>(
|
||||||
into: &mut Self::Accumulator,
|
into: &mut Self::Accumulator,
|
||||||
_: &'static str,
|
field: &'static str,
|
||||||
deserializer: &mut Deserializer<'cx, 'xml>,
|
deserializer: &mut Deserializer<'cx, 'xml>,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
if into.is_some() {
|
if into.is_some() {
|
||||||
return Err(Error::DuplicateValue);
|
return Err(Error::DuplicateValue(field));
|
||||||
}
|
}
|
||||||
|
|
||||||
match deserializer.take_str()? {
|
match deserializer.take_str()? {
|
||||||
|
@ -292,11 +293,11 @@ impl<'xml, 'a> FromXml<'xml> for Cow<'a, str> {
|
||||||
|
|
||||||
fn deserialize(
|
fn deserialize(
|
||||||
into: &mut Self::Accumulator,
|
into: &mut Self::Accumulator,
|
||||||
_: &'static str,
|
field: &'static str,
|
||||||
deserializer: &mut Deserializer<'_, 'xml>,
|
deserializer: &mut Deserializer<'_, 'xml>,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
if into.inner.is_some() {
|
if into.inner.is_some() {
|
||||||
return Err(Error::DuplicateValue);
|
return Err(Error::DuplicateValue(field));
|
||||||
}
|
}
|
||||||
|
|
||||||
let value = match deserializer.take_str()? {
|
let value = match deserializer.take_str()? {
|
||||||
|
@ -595,11 +596,11 @@ impl<'xml> FromXml<'xml> for DateTime<Utc> {
|
||||||
|
|
||||||
fn deserialize<'cx>(
|
fn deserialize<'cx>(
|
||||||
into: &mut Self::Accumulator,
|
into: &mut Self::Accumulator,
|
||||||
_: &'static str,
|
field: &'static str,
|
||||||
deserializer: &mut Deserializer<'cx, 'xml>,
|
deserializer: &mut Deserializer<'cx, 'xml>,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
if into.is_some() {
|
if into.is_some() {
|
||||||
return Err(Error::DuplicateValue);
|
return Err(Error::DuplicateValue(field));
|
||||||
}
|
}
|
||||||
|
|
||||||
let value = match deserializer.take_str()? {
|
let value = match deserializer.take_str()? {
|
||||||
|
@ -657,11 +658,11 @@ impl<'xml> FromXml<'xml> for NaiveDate {
|
||||||
|
|
||||||
fn deserialize<'cx>(
|
fn deserialize<'cx>(
|
||||||
into: &mut Self::Accumulator,
|
into: &mut Self::Accumulator,
|
||||||
_: &'static str,
|
field: &'static str,
|
||||||
deserializer: &mut Deserializer<'cx, 'xml>,
|
deserializer: &mut Deserializer<'cx, 'xml>,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
if into.is_some() {
|
if into.is_some() {
|
||||||
return Err(Error::DuplicateValue);
|
return Err(Error::DuplicateValue(field));
|
||||||
}
|
}
|
||||||
|
|
||||||
let value = match deserializer.take_str()? {
|
let value = match deserializer.take_str()? {
|
||||||
|
@ -729,7 +730,7 @@ impl<'xml> FromXml<'xml> for IpAddr {
|
||||||
deserializer: &mut Deserializer<'cx, 'xml>,
|
deserializer: &mut Deserializer<'cx, 'xml>,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
if into.is_some() {
|
if into.is_some() {
|
||||||
return Err(Error::DuplicateValue);
|
return Err(Error::DuplicateValue(field));
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut value = None;
|
let mut value = None;
|
||||||
|
|
|
@ -151,8 +151,8 @@ pub enum Error {
|
||||||
UnexpectedState(&'static str),
|
UnexpectedState(&'static str),
|
||||||
#[error("expected scalar, found {0}")]
|
#[error("expected scalar, found {0}")]
|
||||||
ExpectedScalar(String),
|
ExpectedScalar(String),
|
||||||
#[error("duplicate value")]
|
#[error("duplicate value for {0}")]
|
||||||
DuplicateValue,
|
DuplicateValue(&'static str),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
|
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
|
||||||
|
|
Loading…
Reference in New Issue