Crate serde_path_to_error[][src]

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.


use serde::Deserialize;
use std::collections::BTreeMap as Map;

struct Package {
    name: String,
    dependencies: Map<String, Dependency>,

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");


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.

Serializer adapter that records path to serialization errors.

State for bookkeeping across nested deserializer calls.


Single segment of a path.


Entry point. See crate documentation for an example.

Entry point for tracking path to Serialize error.