1// Generated from definition io.k8s.api.admissionregistration.v1.Variable
23/// Variable is the definition of a variable that is used for composition. A variable is defined as a named expression.
4#[derive(Clone, Debug, Default, PartialEq)]
5pub struct Variable {
6/// Expression is the expression that will be evaluated as the value of the variable. The CEL expression has access to the same identifiers as the CEL expressions in Validation.
7pub expression: std::string::String,
89/// Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is "foo", the variable will be available as `variables.foo`
10pub name: std::string::String,
11}
1213impl crate::DeepMerge for Variable {
14fn merge_from(&mut self, other: Self) {
15crate::DeepMerge::merge_from(&mut self.expression, other.expression);
16crate::DeepMerge::merge_from(&mut self.name, other.name);
17 }
18}
1920impl<'de> crate::serde::Deserialize<'de> for Variable {
21fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
22#[allow(non_camel_case_types)]
23enum Field {
24 Key_expression,
25 Key_name,
26 Other,
27 }
2829impl<'de> crate::serde::Deserialize<'de> for Field {
30fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
31struct Visitor;
3233impl crate::serde::de::Visitor<'_> for Visitor {
34type Value = Field;
3536fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
37 f.write_str("field identifier")
38 }
3940fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
41Ok(match v {
42"expression" => Field::Key_expression,
43"name" => Field::Key_name,
44_ => Field::Other,
45 })
46 }
47 }
4849 deserializer.deserialize_identifier(Visitor)
50 }
51 }
5253struct Visitor;
5455impl<'de> crate::serde::de::Visitor<'de> for Visitor {
56type Value = Variable;
5758fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
59 f.write_str("Variable")
60 }
6162fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
63let mut value_expression: Option<std::string::String> = None;
64let mut value_name: Option<std::string::String> = None;
6566while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
67match key {
68 Field::Key_expression => value_expression = crate::serde::de::MapAccess::next_value(&mut map)?,
69 Field::Key_name => value_name = crate::serde::de::MapAccess::next_value(&mut map)?,
70 Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
71 }
72 }
7374Ok(Variable {
75 expression: value_expression.unwrap_or_default(),
76 name: value_name.unwrap_or_default(),
77 })
78 }
79 }
8081 deserializer.deserialize_struct(
82"Variable",
83&[
84"expression",
85"name",
86 ],
87 Visitor,
88 )
89 }
90}
9192impl crate::serde::Serialize for Variable {
93fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
94let mut state = serializer.serialize_struct(
95"Variable",
962,
97 )?;
98crate::serde::ser::SerializeStruct::serialize_field(&mut state, "expression", &self.expression)?;
99crate::serde::ser::SerializeStruct::serialize_field(&mut state, "name", &self.name)?;
100crate::serde::ser::SerializeStruct::end(state)
101 }
102}
103104#[cfg(feature = "schemars")]
105impl crate::schemars::JsonSchema for Variable {
106fn schema_name() -> std::string::String {
107"io.k8s.api.admissionregistration.v1.Variable".into()
108 }
109110fn json_schema(__gen: &mut crate::schemars::gen::SchemaGenerator) -> crate::schemars::schema::Schema {
111crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
112 metadata: Some(std::boxed::Box::new(crate::schemars::schema::Metadata {
113 description: Some("Variable is the definition of a variable that is used for composition. A variable is defined as a named expression.".into()),
114 ..Default::default()
115 })),
116 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars::schema::InstanceType::Object))),
117 object: Some(std::boxed::Box::new(crate::schemars::schema::ObjectValidation {
118 properties: [
119 (
120"expression".into(),
121crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
122 metadata: Some(std::boxed::Box::new(crate::schemars::schema::Metadata {
123 description: Some("Expression is the expression that will be evaluated as the value of the variable. The CEL expression has access to the same identifiers as the CEL expressions in Validation.".into()),
124 ..Default::default()
125 })),
126 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars::schema::InstanceType::String))),
127 ..Default::default()
128 }),
129 ),
130 (
131"name".into(),
132crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
133 metadata: Some(std::boxed::Box::new(crate::schemars::schema::Metadata {
134 description: Some("Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is \"foo\", the variable will be available as `variables.foo`".into()),
135 ..Default::default()
136 })),
137 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars::schema::InstanceType::String))),
138 ..Default::default()
139 }),
140 ),
141 ].into(),
142 required: [
143"expression".into(),
144"name".into(),
145 ].into(),
146 ..Default::default()
147 })),
148 ..Default::default()
149 })
150 }
151}