trybuild_internals_api/
inherit.rs1use serde::de::{self, Deserialize, Deserializer, Visitor};
2use serde_derive::Deserialize;
3use std::fmt;
4
5#[derive(Deserialize)]
6#[serde(deny_unknown_fields)]
7pub struct InheritEdition {
8 #[allow(dead_code)]
9 pub workspace: True,
10}
11
12pub struct True;
13
14impl<'de> Deserialize<'de> for True {
15 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
16 where
17 D: Deserializer<'de>,
18 {
19 deserializer.deserialize_bool(True)
20 }
21}
22
23impl<'de> Visitor<'de> for True {
24 type Value = True;
25
26 fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
27 formatter.write_str("bool")
28 }
29
30 fn visit_bool<E>(self, b: bool) -> Result<Self::Value, E>
31 where
32 E: de::Error,
33 {
34 if b {
35 Ok(True)
36 } else {
37 Err(de::Error::custom(
38 "workspace=false is unsupported for package.edition",
39 ))
40 }
41 }
42}