diff --git a/typify-impl/src/type_entry.rs b/typify-impl/src/type_entry.rs index 645e35c3..8c2d79b8 100644 --- a/typify-impl/src/type_entry.rs +++ b/typify-impl/src/type_entry.rs @@ -1630,16 +1630,16 @@ impl TypeEntry { // TODO: if a user were to derive schemars::JsonSchema, it // wouldn't be accurate. + // The conversion work lives in TryFrom<&str>: the validation + // asserts what the type is, so it sits with the + // assertion-flavored conversions, and FromStr, + // TryFrom, and Deserialize all delegate to it. quote! { impl ::std::str::FromStr for #type_name { type Err = self::error::ConversionError; fn from_str(value: &str) -> ::std::result::Result { - #max - #min - #pat - - Ok(Self(value.to_string())) + ::std::convert::TryFrom::try_from(value) } } impl ::std::convert::TryFrom<&str> for #type_name { @@ -1648,7 +1648,11 @@ impl TypeEntry { fn try_from(value: &str) -> ::std::result::Result { - value.parse() + #max + #min + #pat + + Ok(Self(value.to_string())) } } impl ::std::convert::TryFrom<::std::string::String> for #type_name { @@ -1657,7 +1661,7 @@ impl TypeEntry { fn try_from(value: ::std::string::String) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } @@ -1668,8 +1672,9 @@ impl TypeEntry { where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from( + ::std::string::String::deserialize(deserializer)?, + ) .map_err(|e: self::error::ConversionError| { ::custom( e.to_string(), diff --git a/typify-impl/tests/vega.out b/typify-impl/tests/vega.out index 55d893d9..c4898a74 100644 --- a/typify-impl/tests/vega.out +++ b/typify-impl/tests/vega.out @@ -7156,12 +7156,7 @@ impl ::std::convert::From ::std::result::Result { - static PATTERN: ::std::sync::LazyLock<::regress::Regex> = - ::std::sync::LazyLock::new(|| ::regress::Regex::new("^(date|utc):.*$").unwrap()); - if PATTERN.find(value).is_none() { - return Err("doesn't match pattern \"^(date|utc):.*$\"".into()); - } - Ok(Self(value.to_string())) + ::std::convert::TryFrom::try_from(value) } } impl ::std::convert::TryFrom<&str> @@ -7169,7 +7164,12 @@ impl ::std::convert::TryFrom<&str> { type Error = self::error::ConversionError; fn try_from(value: &str) -> ::std::result::Result { - value.parse() + static PATTERN: ::std::sync::LazyLock<::regress::Regex> = + ::std::sync::LazyLock::new(|| ::regress::Regex::new("^(date|utc):.*$").unwrap()); + if PATTERN.find(value).is_none() { + return Err("doesn't match pattern \"^(date|utc):.*$\"".into()); + } + Ok(Self(value.to_string())) } } impl ::std::convert::TryFrom<::std::string::String> @@ -7179,7 +7179,7 @@ impl ::std::convert::TryFrom<::std::string::String> fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> @@ -7189,8 +7189,7 @@ impl<'de> ::serde::Deserialize<'de> where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) @@ -7443,12 +7442,7 @@ impl ::std::convert::From ::std::result::Result { - static PATTERN: ::std::sync::LazyLock<::regress::Regex> = - ::std::sync::LazyLock::new(|| ::regress::Regex::new("^(date|utc):.*$").unwrap()); - if PATTERN.find(value).is_none() { - return Err("doesn't match pattern \"^(date|utc):.*$\"".into()); - } - Ok(Self(value.to_string())) + ::std::convert::TryFrom::try_from(value) } } impl ::std::convert::TryFrom<&str> @@ -7456,7 +7450,12 @@ impl ::std::convert::TryFrom<&str> { type Error = self::error::ConversionError; fn try_from(value: &str) -> ::std::result::Result { - value.parse() + static PATTERN: ::std::sync::LazyLock<::regress::Regex> = + ::std::sync::LazyLock::new(|| ::regress::Regex::new("^(date|utc):.*$").unwrap()); + if PATTERN.find(value).is_none() { + return Err("doesn't match pattern \"^(date|utc):.*$\"".into()); + } + Ok(Self(value.to_string())) } } impl ::std::convert::TryFrom<::std::string::String> @@ -7466,7 +7465,7 @@ impl ::std::convert::TryFrom<::std::string::String> fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> @@ -7476,8 +7475,7 @@ impl<'de> ::serde::Deserialize<'de> where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) @@ -7772,12 +7770,7 @@ impl ::std::convert::From ::std::result::Result { - static PATTERN: ::std::sync::LazyLock<::regress::Regex> = - ::std::sync::LazyLock::new(|| ::regress::Regex::new("^(date|utc):.*$").unwrap()); - if PATTERN.find(value).is_none() { - return Err("doesn't match pattern \"^(date|utc):.*$\"".into()); - } - Ok(Self(value.to_string())) + ::std::convert::TryFrom::try_from(value) } } impl ::std::convert::TryFrom<&str> @@ -7785,7 +7778,12 @@ impl ::std::convert::TryFrom<&str> { type Error = self::error::ConversionError; fn try_from(value: &str) -> ::std::result::Result { - value.parse() + static PATTERN: ::std::sync::LazyLock<::regress::Regex> = + ::std::sync::LazyLock::new(|| ::regress::Regex::new("^(date|utc):.*$").unwrap()); + if PATTERN.find(value).is_none() { + return Err("doesn't match pattern \"^(date|utc):.*$\"".into()); + } + Ok(Self(value.to_string())) } } impl ::std::convert::TryFrom<::std::string::String> @@ -7795,7 +7793,7 @@ impl ::std::convert::TryFrom<::std::string::String> fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> @@ -7805,8 +7803,7 @@ impl<'de> ::serde::Deserialize<'de> where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) @@ -8106,12 +8103,7 @@ impl ::std::convert::From ::std::result::Result { - static PATTERN: ::std::sync::LazyLock<::regress::Regex> = - ::std::sync::LazyLock::new(|| ::regress::Regex::new("^(date|utc):.*$").unwrap()); - if PATTERN.find(value).is_none() { - return Err("doesn't match pattern \"^(date|utc):.*$\"".into()); - } - Ok(Self(value.to_string())) + ::std::convert::TryFrom::try_from(value) } } impl ::std::convert::TryFrom<&str> @@ -8119,7 +8111,12 @@ impl ::std::convert::TryFrom<&str> { type Error = self::error::ConversionError; fn try_from(value: &str) -> ::std::result::Result { - value.parse() + static PATTERN: ::std::sync::LazyLock<::regress::Regex> = + ::std::sync::LazyLock::new(|| ::regress::Regex::new("^(date|utc):.*$").unwrap()); + if PATTERN.find(value).is_none() { + return Err("doesn't match pattern \"^(date|utc):.*$\"".into()); + } + Ok(Self(value.to_string())) } } impl ::std::convert::TryFrom<::std::string::String> @@ -8129,7 +8126,7 @@ impl ::std::convert::TryFrom<::std::string::String> fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> @@ -8139,8 +8136,7 @@ impl<'de> ::serde::Deserialize<'de> where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) @@ -8630,12 +8626,7 @@ impl ::std::convert::From ::std::result::Result { - static PATTERN: ::std::sync::LazyLock<::regress::Regex> = - ::std::sync::LazyLock::new(|| ::regress::Regex::new("^(date|utc):.*$").unwrap()); - if PATTERN.find(value).is_none() { - return Err("doesn't match pattern \"^(date|utc):.*$\"".into()); - } - Ok(Self(value.to_string())) + ::std::convert::TryFrom::try_from(value) } } impl ::std::convert::TryFrom<&str> @@ -8643,7 +8634,12 @@ impl ::std::convert::TryFrom<&str> { type Error = self::error::ConversionError; fn try_from(value: &str) -> ::std::result::Result { - value.parse() + static PATTERN: ::std::sync::LazyLock<::regress::Regex> = + ::std::sync::LazyLock::new(|| ::regress::Regex::new("^(date|utc):.*$").unwrap()); + if PATTERN.find(value).is_none() { + return Err("doesn't match pattern \"^(date|utc):.*$\"".into()); + } + Ok(Self(value.to_string())) } } impl ::std::convert::TryFrom<::std::string::String> @@ -8653,7 +8649,7 @@ impl ::std::convert::TryFrom<::std::string::String> fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> @@ -8663,8 +8659,7 @@ impl<'de> ::serde::Deserialize<'de> where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) @@ -8917,12 +8912,7 @@ impl ::std::convert::From ::std::result::Result { - static PATTERN: ::std::sync::LazyLock<::regress::Regex> = - ::std::sync::LazyLock::new(|| ::regress::Regex::new("^(date|utc):.*$").unwrap()); - if PATTERN.find(value).is_none() { - return Err("doesn't match pattern \"^(date|utc):.*$\"".into()); - } - Ok(Self(value.to_string())) + ::std::convert::TryFrom::try_from(value) } } impl ::std::convert::TryFrom<&str> @@ -8930,7 +8920,12 @@ impl ::std::convert::TryFrom<&str> { type Error = self::error::ConversionError; fn try_from(value: &str) -> ::std::result::Result { - value.parse() + static PATTERN: ::std::sync::LazyLock<::regress::Regex> = + ::std::sync::LazyLock::new(|| ::regress::Regex::new("^(date|utc):.*$").unwrap()); + if PATTERN.find(value).is_none() { + return Err("doesn't match pattern \"^(date|utc):.*$\"".into()); + } + Ok(Self(value.to_string())) } } impl ::std::convert::TryFrom<::std::string::String> @@ -8940,7 +8935,7 @@ impl ::std::convert::TryFrom<::std::string::String> fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> @@ -8950,8 +8945,7 @@ impl<'de> ::serde::Deserialize<'de> where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) @@ -9246,12 +9240,7 @@ impl ::std::convert::From ::std::result::Result { - static PATTERN: ::std::sync::LazyLock<::regress::Regex> = - ::std::sync::LazyLock::new(|| ::regress::Regex::new("^(date|utc):.*$").unwrap()); - if PATTERN.find(value).is_none() { - return Err("doesn't match pattern \"^(date|utc):.*$\"".into()); - } - Ok(Self(value.to_string())) + ::std::convert::TryFrom::try_from(value) } } impl ::std::convert::TryFrom<&str> @@ -9259,7 +9248,12 @@ impl ::std::convert::TryFrom<&str> { type Error = self::error::ConversionError; fn try_from(value: &str) -> ::std::result::Result { - value.parse() + static PATTERN: ::std::sync::LazyLock<::regress::Regex> = + ::std::sync::LazyLock::new(|| ::regress::Regex::new("^(date|utc):.*$").unwrap()); + if PATTERN.find(value).is_none() { + return Err("doesn't match pattern \"^(date|utc):.*$\"".into()); + } + Ok(Self(value.to_string())) } } impl ::std::convert::TryFrom<::std::string::String> @@ -9269,7 +9263,7 @@ impl ::std::convert::TryFrom<::std::string::String> fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> @@ -9279,8 +9273,7 @@ impl<'de> ::serde::Deserialize<'de> where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) @@ -9580,12 +9573,7 @@ impl ::std::convert::From ::std::result::Result { - static PATTERN: ::std::sync::LazyLock<::regress::Regex> = - ::std::sync::LazyLock::new(|| ::regress::Regex::new("^(date|utc):.*$").unwrap()); - if PATTERN.find(value).is_none() { - return Err("doesn't match pattern \"^(date|utc):.*$\"".into()); - } - Ok(Self(value.to_string())) + ::std::convert::TryFrom::try_from(value) } } impl ::std::convert::TryFrom<&str> @@ -9593,7 +9581,12 @@ impl ::std::convert::TryFrom<&str> { type Error = self::error::ConversionError; fn try_from(value: &str) -> ::std::result::Result { - value.parse() + static PATTERN: ::std::sync::LazyLock<::regress::Regex> = + ::std::sync::LazyLock::new(|| ::regress::Regex::new("^(date|utc):.*$").unwrap()); + if PATTERN.find(value).is_none() { + return Err("doesn't match pattern \"^(date|utc):.*$\"".into()); + } + Ok(Self(value.to_string())) } } impl ::std::convert::TryFrom<::std::string::String> @@ -9603,7 +9596,7 @@ impl ::std::convert::TryFrom<::std::string::String> fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> @@ -9613,8 +9606,7 @@ impl<'de> ::serde::Deserialize<'de> where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) @@ -11177,6 +11169,12 @@ impl ::std::convert::From for ::std::string::String { impl ::std::str::FromStr for EncodeKey { type Err = self::error::ConversionError; fn from_str(value: &str) -> ::std::result::Result { + ::std::convert::TryFrom::try_from(value) + } +} +impl ::std::convert::TryFrom<&str> for EncodeKey { + type Error = self::error::ConversionError; + fn try_from(value: &str) -> ::std::result::Result { static PATTERN: ::std::sync::LazyLock<::regress::Regex> = ::std::sync::LazyLock::new(|| ::regress::Regex::new("^.+$").unwrap()); if PATTERN.find(value).is_none() { @@ -11185,18 +11183,12 @@ impl ::std::str::FromStr for EncodeKey { Ok(Self(value.to_string())) } } -impl ::std::convert::TryFrom<&str> for EncodeKey { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} impl ::std::convert::TryFrom<::std::string::String> for EncodeKey { type Error = self::error::ConversionError; fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> for EncodeKey { @@ -11204,8 +11196,7 @@ impl<'de> ::serde::Deserialize<'de> for EncodeKey { where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) @@ -42549,6 +42540,12 @@ impl ::std::convert::From for ::std::string::Strin impl ::std::str::FromStr for TitleObjectEncodeSubtype0Key { type Err = self::error::ConversionError; fn from_str(value: &str) -> ::std::result::Result { + ::std::convert::TryFrom::try_from(value) + } +} +impl ::std::convert::TryFrom<&str> for TitleObjectEncodeSubtype0Key { + type Error = self::error::ConversionError; + fn try_from(value: &str) -> ::std::result::Result { static PATTERN: ::std::sync::LazyLock<::regress::Regex> = ::std::sync::LazyLock::new(|| { ::regress::Regex::new("^(?!interactive|name|style).+$").unwrap() @@ -42559,18 +42556,12 @@ impl ::std::str::FromStr for TitleObjectEncodeSubtype0Key { Ok(Self(value.to_string())) } } -impl ::std::convert::TryFrom<&str> for TitleObjectEncodeSubtype0Key { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} impl ::std::convert::TryFrom<::std::string::String> for TitleObjectEncodeSubtype0Key { type Error = self::error::ConversionError; fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> for TitleObjectEncodeSubtype0Key { @@ -42578,8 +42569,7 @@ impl<'de> ::serde::Deserialize<'de> for TitleObjectEncodeSubtype0Key { where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) diff --git a/typify/tests/schemas/id-or-name.rs b/typify/tests/schemas/id-or-name.rs index 22593939..1d3f2b13 100644 --- a/typify/tests/schemas/id-or-name.rs +++ b/typify/tests/schemas/id-or-name.rs @@ -170,6 +170,12 @@ impl ::std::convert::From for ::std::string::String { impl ::std::str::FromStr for IdOrYoloYolo { type Err = self::error::ConversionError; fn from_str(value: &str) -> ::std::result::Result { + ::std::convert::TryFrom::try_from(value) + } +} +impl ::std::convert::TryFrom<&str> for IdOrYoloYolo { + type Error = self::error::ConversionError; + fn try_from(value: &str) -> ::std::result::Result { static PATTERN: ::std::sync::LazyLock<::regress::Regex> = ::std::sync::LazyLock::new(|| ::regress::Regex::new(".*").unwrap()); if PATTERN.find(value).is_none() { @@ -178,18 +184,12 @@ impl ::std::str::FromStr for IdOrYoloYolo { Ok(Self(value.to_string())) } } -impl ::std::convert::TryFrom<&str> for IdOrYoloYolo { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} impl ::std::convert::TryFrom<::std::string::String> for IdOrYoloYolo { type Error = self::error::ConversionError; fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> for IdOrYoloYolo { @@ -197,8 +197,7 @@ impl<'de> ::serde::Deserialize<'de> for IdOrYoloYolo { where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) @@ -222,6 +221,12 @@ impl ::std::convert::From for ::std::string::String { impl ::std::str::FromStr for Name { type Err = self::error::ConversionError; fn from_str(value: &str) -> ::std::result::Result { + ::std::convert::TryFrom::try_from(value) + } +} +impl ::std::convert::TryFrom<&str> for Name { + type Error = self::error::ConversionError; + fn try_from(value: &str) -> ::std::result::Result { if value.chars().count() > 63usize { return Err("longer than 63 characters".into()); } @@ -236,18 +241,12 @@ impl ::std::str::FromStr for Name { Ok(Self(value.to_string())) } } -impl ::std::convert::TryFrom<&str> for Name { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} impl ::std::convert::TryFrom<::std::string::String> for Name { type Error = self::error::ConversionError; fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> for Name { @@ -255,8 +254,7 @@ impl<'de> ::serde::Deserialize<'de> for Name { where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) diff --git a/typify/tests/schemas/merged-schemas.rs b/typify/tests/schemas/merged-schemas.rs index ac99909d..e7b92de4 100644 --- a/typify/tests/schemas/merged-schemas.rs +++ b/typify/tests/schemas/merged-schemas.rs @@ -249,6 +249,12 @@ impl ::std::convert::From for ::std::string::String { impl ::std::str::FromStr for MergeStringBounds { type Err = self::error::ConversionError; fn from_str(value: &str) -> ::std::result::Result { + ::std::convert::TryFrom::try_from(value) + } +} +impl ::std::convert::TryFrom<&str> for MergeStringBounds { + type Error = self::error::ConversionError; + fn try_from(value: &str) -> ::std::result::Result { if value.chars().count() > 10usize { return Err("longer than 10 characters".into()); } @@ -258,18 +264,12 @@ impl ::std::str::FromStr for MergeStringBounds { Ok(Self(value.to_string())) } } -impl ::std::convert::TryFrom<&str> for MergeStringBounds { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} impl ::std::convert::TryFrom<::std::string::String> for MergeStringBounds { type Error = self::error::ConversionError; fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> for MergeStringBounds { @@ -277,8 +277,7 @@ impl<'de> ::serde::Deserialize<'de> for MergeStringBounds { where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) @@ -410,6 +409,12 @@ impl ::std::convert::From for ::std::string::String { impl ::std::str::FromStr for TriplePattern { type Err = self::error::ConversionError; fn from_str(value: &str) -> ::std::result::Result { + ::std::convert::TryFrom::try_from(value) + } +} +impl ::std::convert::TryFrom<&str> for TriplePattern { + type Error = self::error::ConversionError; + fn try_from(value: &str) -> ::std::result::Result { static PATTERN: ::std::sync::LazyLock<::regress::Regex> = ::std::sync::LazyLock::new(|| { ::regress::Regex::new("(?=^[a-z].+$)(?=^.{4,8}$)(?=.+[a-z]$)").unwrap() @@ -420,18 +425,12 @@ impl ::std::str::FromStr for TriplePattern { Ok(Self(value.to_string())) } } -impl ::std::convert::TryFrom<&str> for TriplePattern { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} impl ::std::convert::TryFrom<::std::string::String> for TriplePattern { type Error = self::error::ConversionError; fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> for TriplePattern { @@ -439,8 +438,7 @@ impl<'de> ::serde::Deserialize<'de> for TriplePattern { where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) diff --git a/typify/tests/schemas/property-pattern.rs b/typify/tests/schemas/property-pattern.rs index b60ef0da..54652f5e 100644 --- a/typify/tests/schemas/property-pattern.rs +++ b/typify/tests/schemas/property-pattern.rs @@ -29,6 +29,12 @@ impl ::std::convert::From for ::std::st impl ::std::str::FromStr for TestGrammarForPatternPropertiesRulesKey { type Err = self::error::ConversionError; fn from_str(value: &str) -> ::std::result::Result { + ::std::convert::TryFrom::try_from(value) + } +} +impl ::std::convert::TryFrom<&str> for TestGrammarForPatternPropertiesRulesKey { + type Error = self::error::ConversionError; + fn try_from(value: &str) -> ::std::result::Result { static PATTERN: ::std::sync::LazyLock<::regress::Regex> = ::std::sync::LazyLock::new(|| ::regress::Regex::new("^[a-zA-Z_]\\w*$").unwrap()); if PATTERN.find(value).is_none() { @@ -37,18 +43,12 @@ impl ::std::str::FromStr for TestGrammarForPatternPropertiesRulesKey { Ok(Self(value.to_string())) } } -impl ::std::convert::TryFrom<&str> for TestGrammarForPatternPropertiesRulesKey { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} impl ::std::convert::TryFrom<::std::string::String> for TestGrammarForPatternPropertiesRulesKey { type Error = self::error::ConversionError; fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> for TestGrammarForPatternPropertiesRulesKey { @@ -56,8 +56,7 @@ impl<'de> ::serde::Deserialize<'de> for TestGrammarForPatternPropertiesRulesKey where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) diff --git a/typify/tests/schemas/rust-collisions.rs b/typify/tests/schemas/rust-collisions.rs index c64d99e9..492b5583 100644 --- a/typify/tests/schemas/rust-collisions.rs +++ b/typify/tests/schemas/rust-collisions.rs @@ -595,6 +595,12 @@ impl ::std::convert::From for ::std::string::String { impl ::std::str::FromStr for StringNewtype { type Err = self::error::ConversionError; fn from_str(value: &str) -> ::std::result::Result { + ::std::convert::TryFrom::try_from(value) + } +} +impl ::std::convert::TryFrom<&str> for StringNewtype { + type Error = self::error::ConversionError; + fn try_from(value: &str) -> ::std::result::Result { if value.chars().count() > 100usize { return Err("longer than 100 characters".into()); } @@ -604,18 +610,12 @@ impl ::std::str::FromStr for StringNewtype { Ok(Self(value.to_string())) } } -impl ::std::convert::TryFrom<&str> for StringNewtype { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} impl ::std::convert::TryFrom<::std::string::String> for StringNewtype { type Error = self::error::ConversionError; fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> for StringNewtype { @@ -623,8 +623,7 @@ impl<'de> ::serde::Deserialize<'de> for StringNewtype { where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) diff --git a/typify/tests/schemas/types-with-more-impls.rs b/typify/tests/schemas/types-with-more-impls.rs index 5c208075..c996bee4 100644 --- a/typify/tests/schemas/types-with-more-impls.rs +++ b/typify/tests/schemas/types-with-more-impls.rs @@ -17,6 +17,12 @@ impl ::std::convert::From for ::std::string::String { impl ::std::str::FromStr for PatternString { type Err = self::error::ConversionError; fn from_str(value: &str) -> ::std::result::Result { + ::std::convert::TryFrom::try_from(value) + } +} +impl ::std::convert::TryFrom<&str> for PatternString { + type Error = self::error::ConversionError; + fn try_from(value: &str) -> ::std::result::Result { static PATTERN: ::std::sync::LazyLock<::regress::Regex> = ::std::sync::LazyLock::new(|| ::regress::Regex::new("xx").unwrap()); if PATTERN.find(value).is_none() { @@ -25,18 +31,12 @@ impl ::std::str::FromStr for PatternString { Ok(Self(value.to_string())) } } -impl ::std::convert::TryFrom<&str> for PatternString { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} impl ::std::convert::TryFrom<::std::string::String> for PatternString { type Error = self::error::ConversionError; fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> for PatternString { @@ -44,8 +44,7 @@ impl<'de> ::serde::Deserialize<'de> for PatternString { where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) diff --git a/typify/tests/schemas/various-enums-json-schema.rs b/typify/tests/schemas/various-enums-json-schema.rs index 030f3510..57540b41 100644 --- a/typify/tests/schemas/various-enums-json-schema.rs +++ b/typify/tests/schemas/various-enums-json-schema.rs @@ -428,6 +428,12 @@ impl ::std::convert::From for ::std::string::String { impl ::std::str::FromStr for Ipv4Net { type Err = self::error::ConversionError; fn from_str(value: &str) -> ::std::result::Result { + ::std::convert::TryFrom::try_from(value) + } +} +impl ::std::convert::TryFrom<&str> for Ipv4Net { + type Error = self::error::ConversionError; + fn try_from(value: &str) -> ::std::result::Result { static PATTERN: ::std::sync::LazyLock<::regress::Regex> = ::std::sync::LazyLock::new(|| ::regress::Regex::new(".*").unwrap()); if PATTERN.find(value).is_none() { @@ -436,18 +442,12 @@ impl ::std::str::FromStr for Ipv4Net { Ok(Self(value.to_string())) } } -impl ::std::convert::TryFrom<&str> for Ipv4Net { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} impl ::std::convert::TryFrom<::std::string::String> for Ipv4Net { type Error = self::error::ConversionError; fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> for Ipv4Net { @@ -455,8 +455,7 @@ impl<'de> ::serde::Deserialize<'de> for Ipv4Net { where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) @@ -490,6 +489,12 @@ impl ::std::convert::From for ::std::string::String { impl ::std::str::FromStr for Ipv6Net { type Err = self::error::ConversionError; fn from_str(value: &str) -> ::std::result::Result { + ::std::convert::TryFrom::try_from(value) + } +} +impl ::std::convert::TryFrom<&str> for Ipv6Net { + type Error = self::error::ConversionError; + fn try_from(value: &str) -> ::std::result::Result { static PATTERN: ::std::sync::LazyLock<::regress::Regex> = ::std::sync::LazyLock::new(|| ::regress::Regex::new(".*").unwrap()); if PATTERN.find(value).is_none() { @@ -498,18 +503,12 @@ impl ::std::str::FromStr for Ipv6Net { Ok(Self(value.to_string())) } } -impl ::std::convert::TryFrom<&str> for Ipv6Net { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} impl ::std::convert::TryFrom<::std::string::String> for Ipv6Net { type Error = self::error::ConversionError; fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> for Ipv6Net { @@ -517,8 +516,7 @@ impl<'de> ::serde::Deserialize<'de> for Ipv6Net { where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) diff --git a/typify/tests/schemas/various-enums.rs b/typify/tests/schemas/various-enums.rs index 50711ae3..38a513f6 100644 --- a/typify/tests/schemas/various-enums.rs +++ b/typify/tests/schemas/various-enums.rs @@ -379,6 +379,12 @@ impl ::std::convert::From for ::std::string::String { impl ::std::str::FromStr for Ipv4Net { type Err = self::error::ConversionError; fn from_str(value: &str) -> ::std::result::Result { + ::std::convert::TryFrom::try_from(value) + } +} +impl ::std::convert::TryFrom<&str> for Ipv4Net { + type Error = self::error::ConversionError; + fn try_from(value: &str) -> ::std::result::Result { static PATTERN: ::std::sync::LazyLock<::regress::Regex> = ::std::sync::LazyLock::new(|| ::regress::Regex::new(".*").unwrap()); if PATTERN.find(value).is_none() { @@ -387,18 +393,12 @@ impl ::std::str::FromStr for Ipv4Net { Ok(Self(value.to_string())) } } -impl ::std::convert::TryFrom<&str> for Ipv4Net { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} impl ::std::convert::TryFrom<::std::string::String> for Ipv4Net { type Error = self::error::ConversionError; fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> for Ipv4Net { @@ -406,8 +406,7 @@ impl<'de> ::serde::Deserialize<'de> for Ipv4Net { where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) }) @@ -431,6 +430,12 @@ impl ::std::convert::From for ::std::string::String { impl ::std::str::FromStr for Ipv6Net { type Err = self::error::ConversionError; fn from_str(value: &str) -> ::std::result::Result { + ::std::convert::TryFrom::try_from(value) + } +} +impl ::std::convert::TryFrom<&str> for Ipv6Net { + type Error = self::error::ConversionError; + fn try_from(value: &str) -> ::std::result::Result { static PATTERN: ::std::sync::LazyLock<::regress::Regex> = ::std::sync::LazyLock::new(|| ::regress::Regex::new(".*").unwrap()); if PATTERN.find(value).is_none() { @@ -439,18 +444,12 @@ impl ::std::str::FromStr for Ipv6Net { Ok(Self(value.to_string())) } } -impl ::std::convert::TryFrom<&str> for Ipv6Net { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} impl ::std::convert::TryFrom<::std::string::String> for Ipv6Net { type Error = self::error::ConversionError; fn try_from( value: ::std::string::String, ) -> ::std::result::Result { - value.parse() + ::std::convert::TryFrom::try_from(value.as_str()) } } impl<'de> ::serde::Deserialize<'de> for Ipv6Net { @@ -458,8 +457,7 @@ impl<'de> ::serde::Deserialize<'de> for Ipv6Net { where D: ::serde::Deserializer<'de>, { - ::std::string::String::deserialize(deserializer)? - .parse() + ::std::convert::TryFrom::try_from(::std::string::String::deserialize(deserializer)?) .map_err(|e: self::error::ConversionError| { ::custom(e.to_string()) })