Move needless_collect
into the methods
lint pass
This commit is contained in:
parent
213003b887
commit
b0dcb862c6
@ -237,7 +237,6 @@ pub(crate) static LINTS: &[&crate::LintInfo] = &[
|
||||
crate::loops::MANUAL_MEMCPY_INFO,
|
||||
crate::loops::MISSING_SPIN_LOOP_INFO,
|
||||
crate::loops::MUT_RANGE_BOUND_INFO,
|
||||
crate::loops::NEEDLESS_COLLECT_INFO,
|
||||
crate::loops::NEEDLESS_RANGE_LOOP_INFO,
|
||||
crate::loops::NEVER_LOOP_INFO,
|
||||
crate::loops::SAME_ITEM_PUSH_INFO,
|
||||
@ -346,6 +345,7 @@ pub(crate) static LINTS: &[&crate::LintInfo] = &[
|
||||
crate::methods::MAP_UNWRAP_OR_INFO,
|
||||
crate::methods::MUT_MUTEX_LOCK_INFO,
|
||||
crate::methods::NAIVE_BYTECOUNT_INFO,
|
||||
crate::methods::NEEDLESS_COLLECT_INFO,
|
||||
crate::methods::NEEDLESS_OPTION_AS_DEREF_INFO,
|
||||
crate::methods::NEEDLESS_OPTION_TAKE_INFO,
|
||||
crate::methods::NEEDLESS_SPLITN_INFO,
|
||||
|
@ -9,7 +9,6 @@ mod manual_flatten;
|
||||
mod manual_memcpy;
|
||||
mod missing_spin_loop;
|
||||
mod mut_range_bound;
|
||||
mod needless_collect;
|
||||
mod needless_range_loop;
|
||||
mod never_loop;
|
||||
mod same_item_push;
|
||||
@ -205,28 +204,6 @@ declare_clippy_lint! {
|
||||
"`loop { if let { ... } else break }`, which can be written as a `while let` loop"
|
||||
}
|
||||
|
||||
declare_clippy_lint! {
|
||||
/// ### 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
|
||||
/// ```rust
|
||||
/// # let iterator = vec![1].into_iter();
|
||||
/// let len = iterator.clone().collect::<Vec<_>>().len();
|
||||
/// // should be
|
||||
/// let len = iterator.count();
|
||||
/// ```
|
||||
#[clippy::version = "1.30.0"]
|
||||
pub NEEDLESS_COLLECT,
|
||||
nursery,
|
||||
"collecting an iterator when collect is not needed"
|
||||
}
|
||||
|
||||
declare_clippy_lint! {
|
||||
/// ### What it does
|
||||
/// Checks `for` loops over slices with an explicit counter
|
||||
@ -605,7 +582,6 @@ declare_lint_pass!(Loops => [
|
||||
EXPLICIT_INTO_ITER_LOOP,
|
||||
ITER_NEXT_LOOP,
|
||||
WHILE_LET_LOOP,
|
||||
NEEDLESS_COLLECT,
|
||||
EXPLICIT_COUNTER_LOOP,
|
||||
EMPTY_LOOP,
|
||||
WHILE_LET_ON_ITERATOR,
|
||||
@ -667,8 +643,6 @@ impl<'tcx> LateLintPass<'tcx> for Loops {
|
||||
while_immutable_condition::check(cx, condition, body);
|
||||
missing_spin_loop::check(cx, condition, body);
|
||||
}
|
||||
|
||||
needless_collect::check(expr, cx);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -54,6 +54,7 @@ mod map_flatten;
|
||||
mod map_identity;
|
||||
mod map_unwrap_or;
|
||||
mod mut_mutex_lock;
|
||||
mod needless_collect;
|
||||
mod needless_option_as_deref;
|
||||
mod needless_option_take;
|
||||
mod no_effect_replace;
|
||||
@ -3141,6 +3142,28 @@ declare_clippy_lint! {
|
||||
"jumping to the start of stream using `seek` method"
|
||||
}
|
||||
|
||||
declare_clippy_lint! {
|
||||
/// ### 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
|
||||
/// ```rust
|
||||
/// # let iterator = vec![1].into_iter();
|
||||
/// let len = iterator.clone().collect::<Vec<_>>().len();
|
||||
/// // should be
|
||||
/// let len = iterator.count();
|
||||
/// ```
|
||||
#[clippy::version = "1.30.0"]
|
||||
pub NEEDLESS_COLLECT,
|
||||
nursery,
|
||||
"collecting an iterator when collect is not needed"
|
||||
}
|
||||
|
||||
pub struct Methods {
|
||||
avoid_breaking_exported_api: bool,
|
||||
msrv: Option<RustcVersion>,
|
||||
@ -3267,6 +3290,7 @@ impl_lint_pass!(Methods => [
|
||||
ITER_KV_MAP,
|
||||
SEEK_FROM_CURRENT,
|
||||
SEEK_TO_START_INSTEAD_OF_REWIND,
|
||||
NEEDLESS_COLLECT,
|
||||
]);
|
||||
|
||||
/// Extracts a method call name, args, and `Span` of the method name.
|
||||
@ -3317,6 +3341,8 @@ impl<'tcx> LateLintPass<'tcx> for Methods {
|
||||
},
|
||||
_ => (),
|
||||
}
|
||||
|
||||
needless_collect::check(expr, cx);
|
||||
}
|
||||
|
||||
#[allow(clippy::too_many_lines)]
|
||||
|
Loading…
x
Reference in New Issue
Block a user