fn deserialize()

in crates/paimon/src/spec/types.rs [1480:1500]


        fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
        where
            D: Deserializer<'de>,
        {
            let s = String::deserialize(deserializer)?;

            let (name, nullable) = s.split_once(' ').unwrap_or((s.as_str(), ""));

            if name == T::NAME && nullable.is_empty() {
                Ok(NullableType::from(true))
            } else if name == T::NAME && nullable.contains("NOT NULL") {
                Ok(NullableType::from(false))
            } else {
                let expect = format!("{} or {} NOT NULL", T::NAME, T::NAME);

                Err(serde::de::Error::invalid_value(
                    serde::de::Unexpected::Str(s.as_str()),
                    &expect.as_str(),
                ))
            }
        }