Crate serde_path_to_error[][src]

Expand description

githubcrates-iodocs-rs


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.

Serializer adapter that records path to serialization errors.

State for bookkeeping across nested deserializer calls.

Enums

Single segment of a path.

Functions

Entry point. See crate documentation for an example.

Entry point for tracking path to Serialize error.