diff --git a/cargo-typify/src/lib.rs b/cargo-typify/src/lib.rs index 0e592d45..b94e311f 100644 --- a/cargo-typify/src/lib.rs +++ b/cargo-typify/src/lib.rs @@ -100,7 +100,8 @@ impl std::str::FromStr for CrateSpec { fn from_str(s: &str) -> Result { fn is_crate(s: &str) -> bool { - !s.contains(|cc: char| !cc.is_alphabetic() && cc != '-' && cc != '_') + s.starts_with(|cc: char| cc.is_alphabetic() || cc == '_') + && !s.contains(|cc: char| !cc.is_alphanumeric() && cc != '-' && cc != '_') } fn convert(s: &str) -> Option { diff --git a/typify-macro/src/lib.rs b/typify-macro/src/lib.rs index d68ba325..69b74026 100644 --- a/typify-macro/src/lib.rs +++ b/typify-macro/src/lib.rs @@ -159,7 +159,8 @@ impl<'de> Deserialize<'de> for CrateName { } fn is_crate(s: &str) -> bool { - !s.contains(|cc: char| !cc.is_alphanumeric() && cc != '_' && cc != '-') + s.starts_with(|cc: char| cc.is_alphabetic() || cc == '_') + && !s.contains(|cc: char| !cc.is_alphanumeric() && cc != '_' && cc != '-') } #[derive(Deserialize)]