有一个新的lint: default_numeric_fallback
:
#[warn(clippy::default_numeric_fallback)]
pub fn is_yelled(s: &str) -> bool {
let (n_upper, n_lower) = s.chars().fold((0, 0), |(n_upper, n_lower), c| {
if c.is_uppercase() {
(n_upper + 1, n_lower)
} else if c.is_lowercase() {
(n_upper, n_lower + 1)
} else {
(n_upper, n_lower)
}
});
n_upper > n_lower
}
将输出:
warning: default numeric fallback might occur
--> src/lib.rs:4:46
|
4 | let (n_upper, n_lower) = s.chars().fold((0, 0), |(n_upper, n_lower), c| {
| ^ help: consider adding suffix: `0_i32`
|
note: the lint level is defined here
--> src/lib.rs:1:8
|
1 | #[warn(clippy::default_numeric_fallback)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_numeric_fallback
warning: default numeric fallback might occur
--> src/lib.rs:4:49
|
4 | let (n_upper, n_lower) = s.chars().fold((0, 0), |(n_upper, n_lower), c| {
| ^ help: consider adding suffix: `0_i32`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_numeric_fallback
warning: default numeric fallback might occur
--> src/lib.rs:6:24
|
6 | (n_upper + 1, n_lower)
| ^ help: consider adding suffix: `1_i32`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_numeric_fallback
warning: default numeric fallback might occur
--> src/lib.rs:8:33
|
8 | (n_upper, n_lower + 1)
| ^ help: consider adding suffix: `1_i32`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_numeric_fallback
不幸的是,现在lint只能以严格模式列出警告,并不会发出警告。同时建议使用usize而不是i32
作为默认值似乎有点奇怪。例如,这段代码应该使用usize
。
来源:https://github.com/rust-lang/rust-clippy/issues/6064
i32
的lint,这只是一个回退,并且与推断完全无关。 - user4815162342