rust: disable `clippy::needless_continue`
Miguel Ojeda
maintainerPATCH 1/1 rust: disable `clippy::needless_continue`
Starting with Rust 1.86.0, Clippy's needless_continue lint complains about the last statement of a loop [1], including cases like:
while ... {
match ... {
... if ... => {
...
return ...;
}
_ => continue,
}
}as well as nested matches in a loop.
One solution is changing continue for () [2], but arguably using continue shows the intent better when it is alone in an arm like that.
Moreover, I am not sure we want to force people to try to find other ways to write the code either, in cases when that applies.
In addition, the help text does not really apply in the new cases the lint has introduced, e.g. here one cannot simply "drop" the expression:
warning: this continue expression is redundant
--> rust/macros/helpers.rs:85:18
|
85 | _ => continue,
| ^^^^^^^^
|
= help: consider dropping the continue expression
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_continue
= note: requested on the command line with -W clippy::needless-continue
The examples in the documentation do not show a case like this, either, so the second "help" line does not help.
In addition, locally disabling the lint is not possible with expect, since the behavior differs across versions. Using allow would be possible, but, even then, an extra line just for this is a bit too much, especially if there are other ways to satisfy the lint.
Finally, the lint is still in the "pedantic" category and disabled by default by Clippy.
Thus disable the lint, at least for the time being.
Feedback was submitted to upstream Clippy, in case this can be improved or perhaps the lint split into several [3].
--- Makefile | 1 - 1 file changed, 1 deletion(-)
Makefile +0 -1
@@ -480,7 +480,6 @@ export rust_common_flags := --edition=2021 \ -Wclippy::ignored_unit_patterns \ -Wclippy::mut_mut \ -Wclippy::needless_bitwise_bool \ - -Wclippy::needless_continue \ -Aclippy::needless_lifetimes \ -Wclippy::no_mangle_with_rust_abi \ -Wclippy::undocumented_unsafe_blocks \
base-commit: a2cc6ff5ec8f91bc463fd3b0c26b61166a07eb11
Signature · 1 line
2.49.0
Miguel Ojeda
AppliedQuoted 2 lines · Miguel Ojeda
Thus disable the lint, at least for the time being.
Applied to rust-fixes -- thanks for the feedback in the other thread everyone! Tags still welcome for a day or two.
Cc: [email protected] # Needed in 6.12.y and later (Rust is
pinned in older LTSs).
Note that we don't have any cases before 6.15, but I added Cc: stable since I assume we may in the future, and it is easier to just have the same set everywhere.
Cheers,
Miguel
Quoted 47 lines · Miguel Ojeda
Starting with Rust 1.86.0, Clippy's
needless_continuelint complains about the last statement of a loop [1], including cases like:while ... { match ... { ... if ... => { ... return ...; } _ => continue, } }as well as nested
matches in a loop.One solution is changing
continuefor()[2], but arguably usingcontinueshows the intent better when it is alone in an arm like that.Moreover, I am not sure we want to force people to try to find other ways to write the code either, in cases when that applies.
In addition, the help text does not really apply in the new cases the lint has introduced, e.g. here one cannot simply "drop" the expression:
warning: this
continueexpression is redundant
-->rust/macros/helpers.rs:85:18
|
85 | _ => continue,
| ^^^^^^^^
|
= help: consider dropping thecontinueexpression
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_continue
= note: requested on the command line with-W clippy::needless-continueThe examples in the documentation do not show a case like this, either, so the second "help" line does not help.
In addition, locally disabling the lint is not possible with
expect, since the behavior differs across versions. Usingallowwould be possible, but, even then, an extra line just for this is a bit too much, especially if there are other ways to satisfy the lint.Finally, the lint is still in the "pedantic" category and disabled by default by Clippy.
Thus disable the lint, at least for the time being.
Quoted 7 lines
Feedback was submitted to upstream Clippy, in case this can be improved or perhaps the lint split into several [3].