k8s-openapi-codegen-common 0.27.1

Common code for the k8s-openapi code generator and k8s-openapi-derive
Documentation

impl{type_generics_impl} {local}serde::Deserialize<'de> for {type_name}{type_generics_type}{type_generics_where} {{
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: {local}serde::Deserializer<'de> {{
        #[allow(non_camel_case_types)]
        enum Field {{
{fields}        }}

        impl<'de> {local}serde::Deserialize<'de> for Field {{
            fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: {local}serde::Deserializer<'de> {{
                struct Visitor;

                impl {local}serde::de::Visitor<'_> for Visitor {{
                    type Value = Field;

                    fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {{
                        f.write_str("field identifier")
                    }}

                    fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: {local}serde::de::Error {{
                        Ok(match v {{
{str_to_field_match_arms}                        }})
                    }}
                }}

                deserializer.deserialize_identifier(Visitor)
            }}
        }}

        struct Visitor{type_generics_type}{visitor_field};

        impl{type_generics_impl} {local}serde::de::Visitor<'de> for Visitor{type_generics_type}{type_generics_where} {{
            type Value = {type_name}{type_generics_type};

            fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {{
                f.write_str({visitor_expecting_type_name})
            }}

            fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: {local}serde::de::MapAccess<'de> {{
{field_value_defs}
                while let Some(key) = {local}serde::de::MapAccess::next_key::<Field>(&mut map)? {{
                    match key {{
{field_value_match_arms}                    }}
                }}

                Ok({type_name} {{
{field_value_assignment}                }})
            }}
        }}

        deserializer.deserialize_struct(
            {deserialize_type_name},
            &[
{field_name_list}            ],
            Visitor{visitor_create_field},
        )
    }}
}}