use crate::prelude::*; #[derive(JsonSchema, Deserialize, Serialize)] #[serde(deny_unknown_fields)] struct Struct { #[serde(skip)] _skipped: bool, included: bool, } #[test] fn skip_struct_field() { test!(Struct) .assert_snapshot() .assert_allows_de_roundtrip([json!({ "included": true })]) .assert_rejects_de([json!({ "_skipped": true, "included": true })]) .assert_matches_de_roundtrip(arbitrary_values_except( Value::is_array, "structs with `#derive(Deserialize)` can technically be deserialized from sequences, but that's not intended to be used via JSON, so schemars ignores it", )); } #[derive(JsonSchema, Deserialize, Serialize)] pub enum Enum { Included1, #[serde(skip)] _Skipped, Included2, } #[test] fn skip_enum_variants() { test!(Enum) .assert_snapshot() .assert_allows_de_roundtrip([json!("Included1"), json!("Included2")]) .assert_rejects_de([json!("_Skipped")]) .assert_matches_de_roundtrip(arbitrary_values()); }