샘플
serde 1.0.229: serde deny_unknown_fields stops rejecting unknown keys once the struct is flattened, while the pair the documentation calls unsupported compiles and works in the ordinary case
검증된 샘플 — cargo serde 1.0.229: serde deny_unknown_fields stops rejecting unknown keys once the struct is flattened, while the pair the documentation calls…
sha256:0c0a0329b6b2d901cce677b9664dd22b748c2a5249af00e202c0d2e12eab06f0
이 네트워크가 제공하는 것은 하나입니다. 빌드되는 샘플. 샌드박스에서 돌리고 서명된 영수증을 보관합니다. 등급을 매기지 않고 무엇도 보증하지 않습니다 — 같은 코드가 당신 환경에서 빌드되는지는 측정한 적이 없습니다.
통과한 계약 영수증을 낸 서로 다른 서명 키의 수입니다. 하나면 작성자 혼자이고, 둘 이상이면 다른 사람도 빌드했다는 뜻입니다. 키는 스스로 만드는 것이고 뒤에 등록된 신원이 없으므로, 세는 것은 사람이 아니라 키입니다.
MIT-0
실행 증거
선언된 환경과 서명된 실행을 분리해 두었습니다. 이 샘플이 무엇을 어디서 실행했는지 그대로 볼 수 있습니다.
- 증거 기준
- 서명된 컨트랙트 통과
- 검증 영수증
- 2
- 빌드한 서명 키
- 2
선언된 환경
rust 1 linux x64 rust 1 rust cargo
검증 실행 환경
| 환경 | 컨트랙트 | 단계 | 실행일 |
|---|---|---|---|
| rust 1 · linux alpine/x64 · docker ed25519:a2ec939a4c60e243 | PASS | compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS CONTAINER_RUN · cargo@1 |
2026-08-14 |
| rust 1 · linux alpine/x64 · docker ed25519:2175b912ea1c23b1 | PASS | compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS CONTAINER_RUN · cargo@1 |
2026-08-18 |
케이스
FIX- 목표
- serde deny_unknown_fields stops rejecting unknown keys once the struct is flattened, while the pair the documentation calls unsupported compiles and works in the ordinary case
- 심벌
-
- Deserialize
- deny_unknown_fields
- flatten
- rename_all
- rename_all_fields
- default
- skip_serializing_if
- tag
- 환경
- rust 1
- 생성일
- 2026-08-14T13:02:45Z
컨트랙트
- assert deny_unknown_fields rejects an extra key as a Category::Data error naming the field and the accepted names
- assert rename_all is applied first, so the Rust field name is itself rejected as unknown
- assert the accepted-names list is worded three different ways depending on how many fields there are
- compile a probe file with rustc to prove deny_unknown_fields together with flatten emits no error and no warning, because serde_derive implements the pair rather than rejecting it
- compile a probe file with rustc to prove flatten on a newtype struct is the combination serde_derive does reject
- assert deny_unknown_fields with a flattened map rejects every key the map was supposed to collect, so only an empty map is accepted
- assert that rejection carries no expected-names list, unlike deny_unknown_fields on its own
- assert deny_unknown_fields with a flattened struct accepts the flattened fields and rejects only the leftovers
- assert deny_unknown_fields on a struct that is flattened into another one never rejects anything
- assert the key that flattened struct ignored is dropped rather than kept, so it is gone from the re-serialized output
- assert an Option field is filled in with None when absent, with no attribute on it
- assert a field that is neither Option nor defaulted is reported as a missing field
- assert #[serde(default)] covers an absent field but not an explicit null
- assert Option answers None for both absent and null, so the two cannot be told apart
- assert Option serializes as null rather than omitting the key
- assert rename_all on a struct renames its fields but not the variant values of an enum field
- assert rename_all on an enum renames variants and rename_all_fields is what renames their fields
- assert skip_serializing_if omits an Option key entirely instead of writing null
- assert skip_serializing_if on a non-Option field breaks the round trip with a missing field error
- assert an internally tagged enum reports an unknown tag with the tag values it knows
- assert a missing tag is reported as a missing field and an externally tagged enum names its variants
- assert an internally tagged enum drops unknown payload keys, and that deny_unknown_fields on the enum does fire and reject them
- assert that enum rejection arrives with no line and column suffix, unlike every other error here
파일
- Cargo.lock
- Cargo.toml
- csx.json
- rustc_probe/deny_unknown_with_flatten.rs
- rustc_probe/flatten_on_newtype.rs
- src/main.rs