Clippy lints / Correctness
Clippy lint · Correctness · checked with Clippy 0.1.99
clippy::iter_skip_zero: usage of `.skip(0)`
What it meansChecks for usage of .skip(0) on iterators. It is in the correctness group and denied by default (the build fails).
What you see
error: usage of `.skip(0)` --> main.rs:4:23 | 4 | let x = v.iter().skip(0).collect::<Vec<_>>(); | ^ help: if you meant to skip the first element, use: `1` | = note: this call to `skip` does nothing and is useless; remove it = help: for further information visit https://rust-lang.github.io/rust-clippy/stable/index.html#iter_skip_zero = note: `#[deny(clippy::iter_skip_zero)]` on by default
Real output of Clippy 0.1.99 (Rust 1.99) on the example below. Names and line numbers in yours will differ.
Does it matter?
This was likely intended to be .skip(1) to skip the first element, as .skip(0) does nothing. If not, the call should be removed.
Code that is almost certainly wrong. Denied by default: the build fails until you fix it or allow it.
How to fix it
Clippy does not fix this one automatically (its suggestion may change behaviour, so it only shows it). Change the code by hand:
Flagged
let v = vec![1, 2, 3];
let x = v.iter().skip(0).collect::<Vec<_>>();
let y = v.iter().collect::<Vec<_>>();
assert_eq!(x, y);
Turn it off, or on
Allow it where it does not fit your code, as narrowly as you can:
On one item
#[allow(clippy::iter_skip_zero)]
fn my_function() { /* ... */ }Whole crate (Cargo.toml)
[lints.clippy]
iter_skip_zero = "allow"One run
cargo clippy -- -A clippy::iter-skip-zeroThe [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 usage of .skip(0) on iterators.
Why is this bad?
This was likely intended to be .skip(1) to skip the first element, as .skip(0) does
nothing. If not, the call should be removed.
Example
let v = vec![1, 2, 3];
let x = v.iter().skip(0).collect::<Vec<_>>();
let y = v.iter().collect::<Vec<_>>();
assert_eq!(x, y);
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- inverted_saturating_subinverted arithmetic check before subtraction
- invisible_charactersChecks for invisible Unicode characters in the code
- iter_next_loopChecks for loops on x.next()
- iterator_step_by_zero`Iterator::step_by(0)` will panic at runtime
- let_underscore_lockChecks for let _ = sync_lock
- lint_groups_priorityChecks for lint groups with the same priority as lints in the Cargo.toml [lints] table. This lint will be removed once cargo#12918 is resolved
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::inverted_saturating_subinverted arithmetic check before subtractionRead it next →Did this answer your question?