Crate serde_path_to_error
source ·Expand description
Find out the path at which a deserialization error occurred. This crate
provides a wrapper that works with any existing Serde Deserializer
and
exposes the chain of field names leading to the error.
Example
use serde::Deserialize;
use std::collections::BTreeMap as Map;
#[derive(Deserialize)]
struct Package {
name: String,
dependencies: Map<String, Dependency>,
}
#[derive(Deserialize)]
struct Dependency {
version: String,
}
fn main() {
let j = r#"{
"name": "demo",
"dependencies": {
"serde": {
"version": 1
}
}
}"#;
// Some Deserializer.
let jd = &mut serde_json::Deserializer::from_str(j);
let result: Result<Package, _> = serde_path_to_error::deserialize(jd);
match result {
Ok(_) => panic!("expected a type error"),
Err(err) => {
let path = err.path().to_string();
assert_eq!(path, "dependencies.serde.version");
}
}
}
Structs
Deserializer adapter that records path to deserialization errors.
Original deserializer error together with the path at which it occurred.
Path to the error value in the input, like
dependencies.serde.typo1
.Iterator over segments of a path.
State for bookkeeping across nested deserializer calls.
Enums
Single segment of a path.
Functions
Entry point. See crate documentation for an example.