1pub trait ToUpperCamelCase {
2 fn to_upper_camelcase(&self) -> String;
3}
4
5impl ToUpperCamelCase for str {
6 fn to_upper_camelcase(&self) -> String {
7 let mut result = String::with_capacity(self.len());
8 let mut capitalize_next = true;
9
10 for c in self.chars() {
11 if c == '_' {
12 capitalize_next = true;
13 } else if capitalize_next {
14 result.extend(c.to_uppercase());
15 capitalize_next = false;
16 } else {
17 result.extend(c.to_lowercase());
18 }
19 }
20
21 result
22 }
23}
24
25pub enum Language {
26 Rust,
27 Cpp,
28}
29impl Language {
30 pub fn file_extension(&self) -> &'static str {
31 match self {
32 Language::Rust => "rs",
33 Language::Cpp => "cpp",
34 }
35 }
36}