5
5
// from file /compiler/rustc_lint/src/nonstandard_style.rs
6
6
7
7
/// Converts an identifier to an UpperCamelCase form.
8
- /// Returns `None` if the string is already is UpperCamelCase.
8
+ /// Returns `None` if the string is already in UpperCamelCase.
9
9
pub ( crate ) fn to_camel_case ( ident : & str ) -> Option < String > {
10
10
if is_camel_case ( ident) {
11
11
return None ;
@@ -17,7 +17,7 @@ pub(crate) fn to_camel_case(ident: &str) -> Option<String> {
17
17
. split ( '_' )
18
18
. filter ( |component| !component. is_empty ( ) )
19
19
. map ( |component| {
20
- let mut camel_cased_component = String :: new ( ) ;
20
+ let mut camel_cased_component = String :: with_capacity ( component . len ( ) ) ;
21
21
22
22
let mut new_word = true ;
23
23
let mut prev_is_lower_case = true ;
@@ -30,9 +30,9 @@ pub(crate) fn to_camel_case(ident: &str) -> Option<String> {
30
30
}
31
31
32
32
if new_word {
33
- camel_cased_component. push_str ( & c. to_uppercase ( ) . to_string ( ) ) ;
33
+ camel_cased_component. extend ( c. to_uppercase ( ) ) ;
34
34
} else {
35
- camel_cased_component. push_str ( & c. to_lowercase ( ) . to_string ( ) ) ;
35
+ camel_cased_component. extend ( c. to_lowercase ( ) ) ;
36
36
}
37
37
38
38
prev_is_lower_case = c. is_lowercase ( ) ;
@@ -41,16 +41,16 @@ pub(crate) fn to_camel_case(ident: &str) -> Option<String> {
41
41
42
42
camel_cased_component
43
43
} )
44
- . fold ( ( String :: new ( ) , None ) , |( acc, prev) : ( String , Option < String > ) , next| {
44
+ . fold ( ( String :: new ( ) , None ) , |( acc, prev) : ( _ , Option < String > ) , next| {
45
45
// separate two components with an underscore if their boundary cannot
46
46
// be distinguished using a uppercase/lowercase case distinction
47
- let join = if let Some ( prev) = prev {
48
- let l = prev . chars ( ) . last ( ) . unwrap ( ) ;
49
- let f = next. chars ( ) . next ( ) . unwrap ( ) ;
50
- ! char_has_case ( l ) && ! char_has_case ( f )
51
- } else {
52
- false
53
- } ;
47
+ let join = prev
48
+ . and_then ( |prev| {
49
+ let f = next. chars ( ) . next ( ) ? ;
50
+ let l = prev . chars ( ) . last ( ) ? ;
51
+ Some ( ! char_has_case ( l ) && ! char_has_case ( f ) )
52
+ } )
53
+ . unwrap_or ( false ) ;
54
54
( acc + if join { "_" } else { "" } + & next, Some ( next) )
55
55
} )
56
56
. 0 ;
@@ -92,14 +92,12 @@ fn is_camel_case(name: &str) -> bool {
92
92
let mut fst = None ;
93
93
// start with a non-lowercase letter rather than non-uppercase
94
94
// ones (some scripts don't have a concept of upper/lowercase)
95
- ! name. chars ( ) . next ( ) . unwrap ( ) . is_lowercase ( )
95
+ name. chars ( ) . next ( ) . map_or ( true , |c| !c . is_lowercase ( ) )
96
96
&& !name. contains ( "__" )
97
97
&& !name. chars ( ) . any ( |snd| {
98
- let ret = match ( fst, snd) {
99
- ( None , _) => false ,
100
- ( Some ( fst) , snd) => {
101
- char_has_case ( fst) && snd == '_' || char_has_case ( snd) && fst == '_'
102
- }
98
+ let ret = match fst {
99
+ None => false ,
100
+ Some ( fst) => char_has_case ( fst) && snd == '_' || char_has_case ( snd) && fst == '_' ,
103
101
} ;
104
102
fst = Some ( snd) ;
105
103
0 commit comments