diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:47:55 +0000 |
commit | 2aadc03ef15cb5ca5cc2af8a7c08e070742f0ac4 (patch) | |
tree | 033cc839730fda84ff08db877037977be94e5e3a /vendor/serde_ignored/README.md | |
parent | Initial commit. (diff) | |
download | cargo-2aadc03ef15cb5ca5cc2af8a7c08e070742f0ac4.tar.xz cargo-2aadc03ef15cb5ca5cc2af8a7c08e070742f0ac4.zip |
Adding upstream version 0.70.1+ds1.upstream/0.70.1+ds1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/serde_ignored/README.md')
-rw-r--r-- | vendor/serde_ignored/README.md | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/vendor/serde_ignored/README.md b/vendor/serde_ignored/README.md new file mode 100644 index 0000000..d3e6faa --- /dev/null +++ b/vendor/serde_ignored/README.md @@ -0,0 +1,93 @@ +# Serde ignored + +[<img alt="github" src="https://img.shields.io/badge/github-dtolnay/serde--ignored-8da0cb?style=for-the-badge&labelColor=555555&logo=github" height="20">](https://github.com/dtolnay/serde-ignored) +[<img alt="crates.io" src="https://img.shields.io/crates/v/serde_ignored.svg?style=for-the-badge&color=fc8d62&logo=rust" height="20">](https://crates.io/crates/serde_ignored) +[<img alt="docs.rs" src="https://img.shields.io/badge/docs.rs-serde__ignored-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs" height="20">](https://docs.rs/serde_ignored) +[<img alt="build status" src="https://img.shields.io/github/actions/workflow/status/dtolnay/serde-ignored/ci.yml?branch=master&style=for-the-badge" height="20">](https://github.com/dtolnay/serde-ignored/actions?query=branch%3Amaster) + +Find out about keys that are ignored when deserializing data. This crate +provides a wrapper that works with any existing Serde `Deserializer` and invokes +a callback on every ignored field. + +You can use this to warn users about extraneous keys in a config file, for +example. + +Note that if you want unrecognized fields to be an error, consider using the +`#[serde(deny_unknown_fields)]` [attribute] instead. + +[attribute]: https://serde.rs/attributes.html + +```toml +[dependencies] +serde = "1.0" +serde_ignored = "0.1" +``` + +```rust +use serde::Deserialize; +use std::collections::{BTreeSet as Set, BTreeMap as Map}; + +#[derive(Debug, PartialEq, Deserialize)] +struct Package { + name: String, + dependencies: Map<String, Dependency>, +} + +#[derive(Debug, PartialEq, Deserialize)] +struct Dependency { + version: String, +} + +fn main() { + let j = r#"{ + "name": "demo", + "dependencies": { + "serde": { + "version": "1.0", + "typo1": "" + } + }, + "typo2": { + "inner": "" + }, + "typo3": {} + }"#; + + // Some Deserializer. + let jd = &mut serde_json::Deserializer::from_str(j); + + // We will build a set of paths to the unused elements. + let mut unused = Set::new(); + + let p: Package = serde_ignored::deserialize(jd, |path| { + unused.insert(path.to_string()); + }).unwrap(); + + // Deserialized as normal. + println!("{:?}", p); + + // There were three ignored keys. + let mut expected = Set::new(); + expected.insert("dependencies.serde.typo1".to_owned()); + expected.insert("typo2".to_owned()); + expected.insert("typo3".to_owned()); + assert_eq!(unused, expected); +} +``` + +<br> + +#### License + +<sup> +Licensed under either of <a href="LICENSE-APACHE">Apache License, Version +2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option. +</sup> + +<br> + +<sub> +Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in this crate by you, as defined in the Apache-2.0 license, shall +be dual licensed as above, without any additional terms or conditions. +</sub> |