File tree Expand file tree Collapse file tree 2 files changed +107
-19
lines changed Expand file tree Collapse file tree 2 files changed +107
-19
lines changed Original file line number Diff line number Diff line change 11#![ warn( clippy:: implicit_saturating_sub) ]
22
33fn main ( ) {
4- let mut end = 10 ;
5- let mut start = 5 ;
6- let mut i : u32 = end - start ;
4+ let end_8 : u8 = 10 ;
5+ let start_8 : u8 = 5 ;
6+ let mut i_8 : u8 = end_8 - start_8 ;
77
8- if i > 0 {
9- i -= 1 ;
8+ // Lint
9+ if i_8 > 0 {
10+ i_8 -= 1 ;
1011 }
1112
12- match end {
13+ match end_8 {
1314 10 => {
14- if i > 0 {
15- i -= 1 ;
15+ // Lint
16+ if i_8 > 0 {
17+ i_8 -= 1 ;
1618 }
1719 } ,
18- 11 => i += 1 ,
19- _ => i = 0 ,
20+ 11 => i_8 += 1 ,
21+ _ => i_8 = 0 ,
2022 }
23+
24+ let end_16: u16 = 35 ;
25+ let start_16: u16 = 40 ;
26+
27+ let mut i_16: u16 = end_16 - start_16;
28+
29+ // Lint
30+ if i_16 > 0 {
31+ i_16 -= 1 ;
32+ }
33+
34+ let mut end_32: u32 = 7000 ;
35+ let mut start_32: u32 = 7010 ;
36+
37+ let mut i_32: u32 = end_32 - start_32;
38+
39+ // Lint
40+ if i_32 != 0 {
41+ i_32 -= 1 ;
42+ }
43+
44+ // No Lint
45+ if i_32 > 0 {
46+ i_16 += 1 ;
47+ }
48+
49+ // No Lint
50+ if i_32 != 0 {
51+ end_32 -= 1 ;
52+ start_32 += 1 ;
53+ }
54+
55+ let mut end_64: u64 = 75001 ;
56+ let mut start_64: u64 = 75000 ;
57+
58+ let mut i_64: u64 = end_64 - start_64;
59+
60+ // Lint
61+ if i_64 > 0 {
62+ i_64 -= 1 ;
63+ }
64+
65+ // No Lint
66+ if i_64 >= 1 {
67+ i_64 -= 1 ;
68+ }
69+
70+ // No Lint
71+ if i_64 > 0 {
72+ end_64 -= 1 ;
73+ }
74+
75+ // Should signed integers trigger the lint ?
76+ // let endi_64: i64 = 45;
77+ // let starti_64: i64 = 44;
78+
79+ // let mut ii_64 = endi_64 - starti_64;
80+
81+ // Should this produce a warning
82+ // if ii_64 > 0 {
83+ // ii_64 -= 1;
84+ // }
2185}
Original file line number Diff line number Diff line change 11error: Implicitly performing saturating subtraction
2- --> $DIR/implicit_saturating_sub.rs:8 :5
2+ --> $DIR/implicit_saturating_sub.rs:9 :5
33 |
4- LL | / if i > 0 {
5- LL | | i -= 1;
4+ LL | / if i_8 > 0 {
5+ LL | | i_8 -= 1;
66LL | | }
7- | |_____^ help: try: `i .saturating_sub(1);`
7+ | |_____^ help: try: `i_8 = i_8 .saturating_sub(1);`
88 |
99 = note: `-D clippy::implicit-saturating-sub` implied by `-D warnings`
1010
1111error: Implicitly performing saturating subtraction
12- --> $DIR/implicit_saturating_sub.rs:14 :13
12+ --> $DIR/implicit_saturating_sub.rs:16 :13
1313 |
14- LL | / if i > 0 {
15- LL | | i -= 1;
14+ LL | / if i_8 > 0 {
15+ LL | | i_8 -= 1;
1616LL | | }
17- | |_____________^ help: try: `i .saturating_sub(1);`
17+ | |_____________^ help: try: `i_8 = i_8 .saturating_sub(1);`
1818
19- error: aborting due to 2 previous errors
19+ error: Implicitly performing saturating subtraction
20+ --> $DIR/implicit_saturating_sub.rs:30:5
21+ |
22+ LL | / if i_16 > 0 {
23+ LL | | i_16 -= 1;
24+ LL | | }
25+ | |_____^ help: try: `i_16 = i_16.saturating_sub(1);`
26+
27+ error: Implicitly performing saturating subtraction
28+ --> $DIR/implicit_saturating_sub.rs:40:5
29+ |
30+ LL | / if i_32 != 0 {
31+ LL | | i_32 -= 1;
32+ LL | | }
33+ | |_____^ help: try: `i_32 = i_32.saturating_sub(1);`
34+
35+ error: Implicitly performing saturating subtraction
36+ --> $DIR/implicit_saturating_sub.rs:61:5
37+ |
38+ LL | / if i_64 > 0 {
39+ LL | | i_64 -= 1;
40+ LL | | }
41+ | |_____^ help: try: `i_64 = i_64.saturating_sub(1);`
42+
43+ error: aborting due to 5 previous errors
2044
You can’t perform that action at this time.
0 commit comments