3
3
#![ allow( clippy:: redundant_closure) ]
4
4
#![ allow( clippy:: bind_instead_of_map) ]
5
5
6
- struct Deep ( Option < u32 > ) ;
6
+ struct Deep ( Option < usize > ) ;
7
7
8
8
#[ derive( Copy , Clone ) ]
9
9
struct SomeStruct {
10
- some_field : u32 ,
10
+ some_field : usize ,
11
11
}
12
12
13
13
impl SomeStruct {
14
- fn return_some_field ( & self ) -> u32 {
14
+ fn return_some_field ( & self ) -> usize {
15
15
self . some_field
16
16
}
17
17
}
@@ -22,6 +22,7 @@ fn some_call<T: Default>() -> T {
22
22
23
23
fn main ( ) {
24
24
let astronomers_pi = 10 ;
25
+ let ext_arr: [ usize ; 1 ] = [ 2 ] ;
25
26
let ext_str = SomeStruct { some_field : 10 } ;
26
27
27
28
// Should lint - Option
@@ -30,19 +31,21 @@ fn main() {
30
31
let _ = opt. unwrap_or_else ( || 2 ) ;
31
32
let _ = opt. unwrap_or_else ( || astronomers_pi) ;
32
33
let _ = opt. unwrap_or_else ( || ext_str. some_field ) ;
34
+ let _ = opt. unwrap_or_else ( || ext_arr[ 0 ] ) ;
33
35
let _ = opt. and_then ( |_| ext_opt) ;
34
36
let _ = opt. or_else ( || ext_opt) ;
35
37
let _ = opt. or_else ( || None ) ;
36
38
let _ = opt. get_or_insert_with ( || 2 ) ;
37
39
let _ = opt. ok_or_else ( || 2 ) ;
40
+ let _ = opt. ok_or_else ( || ext_arr[ 0 ] ) ;
38
41
39
42
// Cases when unwrap is not called on a simple variable
40
43
let _ = Some ( 10 ) . unwrap_or_else ( || 2 ) ;
41
44
let _ = Some ( 10 ) . and_then ( |_| ext_opt) ;
42
- let _: Option < u32 > = None . or_else ( || ext_opt) ;
45
+ let _: Option < usize > = None . or_else ( || ext_opt) ;
43
46
let _ = None . get_or_insert_with ( || 2 ) ;
44
- let _: Result < u32 , u32 > = None . ok_or_else ( || 2 ) ;
45
- let _: Option < u32 > = None . or_else ( || None ) ;
47
+ let _: Result < usize , usize > = None . ok_or_else ( || 2 ) ;
48
+ let _: Option < usize > = None . or_else ( || None ) ;
46
49
47
50
let mut deep = Deep ( Some ( 42 ) ) ;
48
51
let _ = deep. 0 . unwrap_or_else ( || 2 ) ;
@@ -55,51 +58,54 @@ fn main() {
55
58
let _ = opt. unwrap_or_else ( || ext_str. return_some_field ( ) ) ;
56
59
let _ = opt. or_else ( some_call) ;
57
60
let _ = opt. or_else ( || some_call ( ) ) ;
58
- let _: Result < u32 , u32 > = opt. ok_or_else ( || some_call ( ) ) ;
59
- let _: Result < u32 , u32 > = opt. ok_or_else ( some_call) ;
61
+ let _: Result < usize , usize > = opt. ok_or_else ( || some_call ( ) ) ;
62
+ let _: Result < usize , usize > = opt. ok_or_else ( some_call) ;
60
63
let _ = deep. 0 . get_or_insert_with ( || some_call ( ) ) ;
61
64
let _ = deep. 0 . or_else ( some_call) ;
62
65
let _ = deep. 0 . or_else ( || some_call ( ) ) ;
63
66
64
67
// These are handled by bind_instead_of_map
65
- let _: Option < u32 > = None . or_else ( || Some ( 3 ) ) ;
68
+ let _ = Some ( 10 ) . and_then ( |idx| Some ( ext_arr[ idx] ) ) ;
69
+ let _ = Some ( 10 ) . and_then ( |idx| Some ( idx) ) ;
70
+ let _: Option < usize > = None . or_else ( || Some ( 3 ) ) ;
66
71
let _ = deep. 0 . or_else ( || Some ( 3 ) ) ;
67
72
let _ = opt. or_else ( || Some ( 3 ) ) ;
68
73
69
74
// Should lint - Result
70
- let res: Result < u32 , u32 > = Err ( 5 ) ;
71
- let res2: Result < u32 , SomeStruct > = Err ( SomeStruct { some_field : 5 } ) ;
75
+ let res: Result < usize , usize > = Err ( 5 ) ;
76
+ let res2: Result < usize , SomeStruct > = Err ( SomeStruct { some_field : 5 } ) ;
72
77
73
78
let _ = res2. unwrap_or_else ( |_| 2 ) ;
74
79
let _ = res2. unwrap_or_else ( |_| astronomers_pi) ;
75
80
let _ = res2. unwrap_or_else ( |_| ext_str. some_field ) ;
76
81
77
82
// Should not lint - Result
78
83
let _ = res. unwrap_or_else ( |err| err) ;
84
+ let _ = res. unwrap_or_else ( |err| ext_arr[ err] ) ;
79
85
let _ = res2. unwrap_or_else ( |err| err. some_field ) ;
80
86
let _ = res2. unwrap_or_else ( |err| err. return_some_field ( ) ) ;
81
87
let _ = res2. unwrap_or_else ( |_| ext_str. return_some_field ( ) ) ;
82
88
83
- let _: Result < u32 , u32 > = res. and_then ( |x| Ok ( x) ) ;
84
- let _: Result < u32 , u32 > = res. and_then ( |x| Err ( x) ) ;
89
+ let _: Result < usize , usize > = res. and_then ( |x| Ok ( x) ) ;
90
+ let _: Result < usize , usize > = res. and_then ( |x| Err ( x) ) ;
85
91
86
- let _: Result < u32 , u32 > = res. or_else ( |err| Ok ( err) ) ;
87
- let _: Result < u32 , u32 > = res. or_else ( |err| Err ( err) ) ;
92
+ let _: Result < usize , usize > = res. or_else ( |err| Ok ( err) ) ;
93
+ let _: Result < usize , usize > = res. or_else ( |err| Err ( err) ) ;
88
94
89
95
// These are handled by bind_instead_of_map
90
- let _: Result < u32 , u32 > = res. and_then ( |_| Ok ( 2 ) ) ;
91
- let _: Result < u32 , u32 > = res. and_then ( |_| Ok ( astronomers_pi) ) ;
92
- let _: Result < u32 , u32 > = res. and_then ( |_| Ok ( ext_str. some_field ) ) ;
96
+ let _: Result < usize , usize > = res. and_then ( |_| Ok ( 2 ) ) ;
97
+ let _: Result < usize , usize > = res. and_then ( |_| Ok ( astronomers_pi) ) ;
98
+ let _: Result < usize , usize > = res. and_then ( |_| Ok ( ext_str. some_field ) ) ;
93
99
94
- let _: Result < u32 , u32 > = res. and_then ( |_| Err ( 2 ) ) ;
95
- let _: Result < u32 , u32 > = res. and_then ( |_| Err ( astronomers_pi) ) ;
96
- let _: Result < u32 , u32 > = res. and_then ( |_| Err ( ext_str. some_field ) ) ;
100
+ let _: Result < usize , usize > = res. and_then ( |_| Err ( 2 ) ) ;
101
+ let _: Result < usize , usize > = res. and_then ( |_| Err ( astronomers_pi) ) ;
102
+ let _: Result < usize , usize > = res. and_then ( |_| Err ( ext_str. some_field ) ) ;
97
103
98
- let _: Result < u32 , u32 > = res. or_else ( |_| Ok ( 2 ) ) ;
99
- let _: Result < u32 , u32 > = res. or_else ( |_| Ok ( astronomers_pi) ) ;
100
- let _: Result < u32 , u32 > = res. or_else ( |_| Ok ( ext_str. some_field ) ) ;
104
+ let _: Result < usize , usize > = res. or_else ( |_| Ok ( 2 ) ) ;
105
+ let _: Result < usize , usize > = res. or_else ( |_| Ok ( astronomers_pi) ) ;
106
+ let _: Result < usize , usize > = res. or_else ( |_| Ok ( ext_str. some_field ) ) ;
101
107
102
- let _: Result < u32 , u32 > = res. or_else ( |_| Err ( 2 ) ) ;
103
- let _: Result < u32 , u32 > = res. or_else ( |_| Err ( astronomers_pi) ) ;
104
- let _: Result < u32 , u32 > = res. or_else ( |_| Err ( ext_str. some_field ) ) ;
108
+ let _: Result < usize , usize > = res. or_else ( |_| Err ( 2 ) ) ;
109
+ let _: Result < usize , usize > = res. or_else ( |_| Err ( astronomers_pi) ) ;
110
+ let _: Result < usize , usize > = res. or_else ( |_| Err ( ext_str. some_field ) ) ;
105
111
}
0 commit comments