fn detect_case(ident: &str) -> DetectedCase {
let trimmed_ident = ident.trim_matches('_');
let first_lowercase =
- trimmed_ident.chars().next().map(|chr| chr.is_ascii_lowercase()).unwrap_or(false);
+ trimmed_ident.starts_with(|chr| chr.is_ascii_lowercase());
let mut has_lowercase = first_lowercase;
let mut has_uppercase = false;
let mut has_underscore = false;
}
/// Converts an identifier to a lower_snake_case form.
-/// Returns `None` if the string is already is lower_snake_case.
+/// Returns `None` if the string is already in lower_snake_case.
pub fn to_lower_snake_case(ident: &str) -> Option<String> {
// First, assume that it's UPPER_SNAKE_CASE.
match detect_case(ident) {
// `&& prev` is required to not insert `_` before the first symbol.
if c.is_ascii_uppercase() && prev {
// This check is required to not translate `Weird_Case` into `weird__case`.
- if buf.chars().last() != Some('_') {
+ if !buf.ends_with('_') {
buf.push('_')
}
}