Clippy lints / Nursery
Clippy lint · Nursery · checked with Clippy 0.1.99
clippy::needless_collect: Checks for functions collecting an iterator when collect is not needed
What it meansChecks for functions collecting an iterator when collect is not needed. It is in the nursery group and off by default.
Does it matter?
collect causes the allocation of a new data structure, when this allocation may not be needed.
New lints still being finished. Off by default and may have false positives.
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
let len = iterator.collect::<Vec<_>>().len();
Write this instead
let len = iterator.count();
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]
needless_collect = "warn"In code
#![warn(clippy::needless_collect)]One run
cargo clippy -- -W clippy::needless-collectThe [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 functions collecting an iterator when collect is not needed.
Why is this bad?
collect causes the allocation of a new data structure,
when this allocation may not be needed.
Example
let len = iterator.collect::<Vec<_>>().len();
Use instead:
let len = iterator.count();
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- redundant_cloneChecks for a redundant clone() (and its relatives) which clones an owned value that is going to be dropped without further use
- large_stack_framesChecks for functions that use a lot of stack space. This often happens when constructing a large type, such as an array with a lot of elements, or constructing many smaller-but-still-large structs, or copying around a lot of large types. This lint is a more general version of large_stack_arrays that is intended to look at functions as a whole instead of only individual array expressions inside of a function
- literal_string_with_formatting_argsthis looks like a formatting argument but it is not part of a formatting macro
- missing_const_for_fnthis could be a `const fn`
- needless_pass_by_ref_mutthis parameter is a mutable reference but is not used mutably
- needless_type_castChecks for bindings (constants, statics, or let bindings) that are defined with one numeric type but are consistently cast to a different type in all usages
- non_send_fields_in_send_tyThis lint warns about a Send implementation for a type that contains fields that are not safe to be sent across threads. It tries to detect fields that can cause a soundness issue when sent to another thread (e.g., Rc) while allowing !Send fields that are expected to exist in a Send type, such as raw pointers
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::redundant_cloneChecks for a redundant clone() (and its relatives) which clones an owned value that is going to be dropped without further useRead it next →Did this answer your question?