Clippy lints / Pedantic
Clippy lint · Pedantic · checked with Clippy 0.1.99
clippy::explicit_iter_loop: Checks for loops on x.iter() where &x will do, and suggests the latter
What it meansChecks for loops on x.iter() where &x will do, and suggests the latter. It is in the pedantic group and off by default.
Does it matter?
Readability.
Stricter lints with some false positives. Off by default; opt in with clippy::pedantic.
How to fix it
Clippy can fix this one for you: run cargo clippy --fix (add --allow-dirty if you have uncommitted changes). Review the diff before you commit.
Flagged
// with `y` a `Vec` or slice:
for x in y.iter() {
// ..
}
Write this instead
for x in &y {
// ..
}
Turn it off, or on
It is off by default. To use it, set it to warn or deny:
Whole crate (Cargo.toml)
[lints.clippy]
explicit_iter_loop = "warn"In code
#![warn(clippy::explicit_iter_loop)]One run
cargo clippy -- -W clippy::explicit-iter-loopThe [lints] table needs Rust 1.74 or newer. In a workspace, put it under [workspace.lints.clippy] and add [lints] workspace = true to each member.
Clippy's own documentation
What it does
Checks for loops on x.iter() where &x will do, and
suggests the latter.
Why is this bad?
Readability.
Known problems
False negatives. We currently only warn on some known types.
Example
// with `y` a `Vec` or slice:
for x in y.iter() {
// ..
}
Use instead:
for x in &y {
// ..
}
Configuration
enforce-iter-loop-reborrow: Whether to recommend using implicit into iter for reborrowed values.
Example
let mut vec = vec![1, 2, 3];
let rmvec = &mut vec;
for _ in rmvec.iter() {}
for _ in rmvec.iter_mut() {}
Use instead:
let mut vec = vec![1, 2, 3];
let rmvec = &mut vec;
for _ in &*rmvec {}
for _ in &mut *rmvec {}
(default: false)
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- too_many_linesChecks for functions with a large amount of lines
- missing_errors_docChecks the doc comments of publicly visible functions that return a Result type and warns if there is no # Errors section
- must_use_candidateChecks for public functions that have no #[must_use] attribute, but return something not already marked must-use, have no mutable arg and mutate no statics
- expl_impl_clone_on_copyChecks for explicit Clone implementations for Copy types
- explicit_deref_methodsexplicit `deref` method call
- explicit_into_iter_loopChecks for loops on y.into_iter() where y will do, and suggests the latter
- filter_map_nextcalled `filter_map(..).next()` on an `Iterator`
- flat_map_optionused `flat_map` where `filter_map` could be used instead
- float_cmpstrict comparison of `f32` or `f64`
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::too_many_linesChecks for functions with a large amount of linesRead it next →Did this answer your question?