Improve error reporting for missing values
This commit is contained in:
parent
f6a9d66288
commit
69eca9c2a5
|
@ -63,7 +63,7 @@ fn deserialize_scalar_enum(
|
||||||
|
|
||||||
let value = match deserializer.take_str() {
|
let value = match deserializer.take_str() {
|
||||||
#variants
|
#variants
|
||||||
_ => return Err(Error::UnexpectedValue),
|
_ => return Err(Error::UnexpectedValue("enum variant not found")),
|
||||||
};
|
};
|
||||||
|
|
||||||
*into = Some(value);
|
*into = Some(value);
|
||||||
|
|
|
@ -25,7 +25,7 @@ impl<'xml, T: FromStr> FromXml<'xml> for FromXmlStr<T> {
|
||||||
*into = Some(FromXmlStr(value));
|
*into = Some(FromXmlStr(value));
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
Err(_) => Err(Error::UnexpectedValue),
|
Err(_) => Err(Error::UnexpectedValue("unable to parse value")),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -205,7 +205,9 @@ impl<'xml> FromXml<'xml> for &'xml str {
|
||||||
*into = Some(s);
|
*into = Some(s);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
Some(Cow::Owned(_)) => Err(Error::UnexpectedValue),
|
Some(Cow::Owned(_)) => Err(Error::UnexpectedValue(
|
||||||
|
"string with escape characters cannot be deserialized as &str",
|
||||||
|
)),
|
||||||
None => Err(Error::MissingValue(&Kind::Scalar)),
|
None => Err(Error::MissingValue(&Kind::Scalar)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@ pub fn from_str<'xml, T: FromXml<'xml>>(input: &'xml str) -> Result<T, Error> {
|
||||||
};
|
};
|
||||||
|
|
||||||
if id != expected {
|
if id != expected {
|
||||||
return Err(Error::UnexpectedValue);
|
return Err(Error::UnexpectedValue("unexpected root"));
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut value = None;
|
let mut value = None;
|
||||||
|
@ -99,7 +99,7 @@ pub enum Error {
|
||||||
#[error("unexpected end of stream")]
|
#[error("unexpected end of stream")]
|
||||||
UnexpectedEndOfStream,
|
UnexpectedEndOfStream,
|
||||||
#[error("unexpected value")]
|
#[error("unexpected value")]
|
||||||
UnexpectedValue,
|
UnexpectedValue(&'static str),
|
||||||
#[error("unexpected tag")]
|
#[error("unexpected tag")]
|
||||||
UnexpectedTag,
|
UnexpectedTag,
|
||||||
#[error("missing tag")]
|
#[error("missing tag")]
|
||||||
|
|
|
@ -39,7 +39,7 @@ fn default_namespaces() {
|
||||||
from_str(
|
from_str(
|
||||||
"<NestedDe xmlns=\"WRONG\" xmlns:bar=\"BAZ\"><bar:flag>true</bar:flag></NestedDe>"
|
"<NestedDe xmlns=\"WRONG\" xmlns:bar=\"BAZ\"><bar:flag>true</bar:flag></NestedDe>"
|
||||||
),
|
),
|
||||||
Err::<NestedDe, _>(Error::UnexpectedValue)
|
Err::<NestedDe, _>(Error::UnexpectedValue("unexpected root"))
|
||||||
);
|
);
|
||||||
|
|
||||||
// Correct child namespace
|
// Correct child namespace
|
||||||
|
|
|
@ -30,7 +30,7 @@ fn escape_back() {
|
||||||
from_str(
|
from_str(
|
||||||
"<StructSpecialEntities xmlns=\"URI\"><string><>&"'adsad"</string><str>str&</str></StructSpecialEntities>"
|
"<StructSpecialEntities xmlns=\"URI\"><string><>&"'adsad"</string><str>str&</str></StructSpecialEntities>"
|
||||||
),
|
),
|
||||||
Err::<StructSpecialEntities, _>(Error::UnexpectedValue)
|
Err::<StructSpecialEntities, _>(Error::UnexpectedValue("string with escape characters cannot be deserialized as &str"))
|
||||||
);
|
);
|
||||||
|
|
||||||
// Borrowed
|
// Borrowed
|
||||||
|
|
Loading…
Reference in New Issue