diff --git a/clippy_lints/src/literal_representation.rs b/clippy_lints/src/literal_representation.rs index 145faf0b6..f029dd65b 100644 --- a/clippy_lints/src/literal_representation.rs +++ b/clippy_lints/src/literal_representation.rs @@ -210,7 +210,7 @@ impl<'a> DigitInfo<'a> { .filter(|&c| c != '_') .collect::>() .chunks(group_size) - .map(|chunk| chunk.into_iter().rev().collect()) + .map(|chunk| chunk.iter().rev().collect()) .rev() .collect::>() .join("_"); @@ -221,7 +221,7 @@ impl<'a> DigitInfo<'a> { .filter(|&c| c != '_') .collect::>() .chunks(group_size) - .map(|chunk| chunk.into_iter().collect()) + .map(|chunk| chunk.iter().collect()) .collect::>() .join("_"); format!( @@ -238,7 +238,7 @@ impl<'a> DigitInfo<'a> { .collect::>(); let mut hint = filtered_digits_vec .chunks(group_size) - .map(|chunk| chunk.into_iter().rev().collect()) + .map(|chunk| chunk.iter().rev().collect()) .rev() .collect::>() .join("_"); diff --git a/clippy_lints/src/methods/mod.rs b/clippy_lints/src/methods/mod.rs index 4b83c6e6b..149e39758 100644 --- a/clippy_lints/src/methods/mod.rs +++ b/clippy_lints/src/methods/mod.rs @@ -575,7 +575,7 @@ declare_clippy_lint! { /// temporary placeholder for dealing with the `Option` type, then this does /// not mitigate the need for error handling. If there is a chance that `.get()` /// will be `None` in your program, then it is advisable that the `None` case -/// is handled in a future refactor instead of using `.unwrap()` or the Index +/// is handled in a future refactor instead of using `.unwrap()` or the Index /// trait. /// /// **Example:** @@ -2135,22 +2135,6 @@ fn lint_asref(cx: &LateContext<'_, '_>, expr: &hir::Expr, call_name: &str, as_re } fn ty_has_iter_method(cx: &LateContext<'_, '_>, self_ref_ty: ty::Ty<'_>) -> Option<(&'static Lint, &'static str, &'static str)> { - let (self_ty, mutbl) = match self_ref_ty.sty { - ty::TyKind::Ref(_, self_ty, mutbl) => (self_ty, mutbl), - _ => unreachable!(), - }; - let method_name = match mutbl { - hir::MutImmutable => "iter", - hir::MutMutable => "iter_mut", - }; - - let def_id = match self_ty.sty { - ty::TyKind::Array(..) => return Some((INTO_ITER_ON_ARRAY, "array", method_name)), - ty::TyKind::Slice(..) => return Some((INTO_ITER_ON_REF, "slice", method_name)), - ty::Adt(adt, _) => adt.did, - _ => return None, - }; - // FIXME: instead of this hard-coded list, we should check if `::iter` // exists and has the desired signature. Unfortunately FnCtxt is not exported // so we can't use its `lookup_method` method. @@ -2170,6 +2154,22 @@ fn ty_has_iter_method(cx: &LateContext<'_, '_>, self_ref_ty: ty::Ty<'_>) -> Opti (INTO_ITER_ON_REF, &["std", "sync", "mpsc", "Receiver"]), ]; + let (self_ty, mutbl) = match self_ref_ty.sty { + ty::TyKind::Ref(_, self_ty, mutbl) => (self_ty, mutbl), + _ => unreachable!(), + }; + let method_name = match mutbl { + hir::MutImmutable => "iter", + hir::MutMutable => "iter_mut", + }; + + let def_id = match self_ty.sty { + ty::TyKind::Array(..) => return Some((INTO_ITER_ON_ARRAY, "array", method_name)), + ty::TyKind::Slice(..) => return Some((INTO_ITER_ON_REF, "slice", method_name)), + ty::Adt(adt, _) => adt.did, + _ => return None, + }; + for (lint, path) in &INTO_ITER_COLLECTIONS { if match_def_path(cx.tcx, def_id, path) { return Some((lint, path.last().unwrap(), method_name))