pub(crate) fn field_name_to_singleton_name(field_name: &str) -> String {
if field_name.is_empty() {
return field_name.to_string();
}
let mut chars = field_name.chars().peekable();
let mut name = String::with_capacity(field_name.len());
let mut capitalize_next = false;
while let Some(c) = chars.next() {
if c == '_' {
capitalize_next = true;
} else if capitalize_next {
name.extend(c.to_uppercase());
capitalize_next = false;
} else {
name.push(c);
}
}
name
}