1 use super::EXPLICIT_INTO_ITER_LOOP
;
2 use clippy_utils
::diagnostics
::span_lint_and_sugg
;
3 use clippy_utils
::source
::snippet_with_applicability
;
4 use clippy_utils
::{match_trait_method, paths}
;
5 use rustc_errors
::Applicability
;
7 use rustc_lint
::LateContext
;
8 use rustc_middle
::ty
::TyS
;
10 pub(super) fn check(cx
: &LateContext
<'_
>, self_arg
: &'hir Expr
<'hir
>, call_expr
: &Expr
<'_
>) {
11 let self_ty
= cx
.typeck_results().expr_ty(self_arg
);
12 let self_ty_adjusted
= cx
.typeck_results().expr_ty_adjusted(self_arg
);
13 if !(TyS
::same_type(self_ty
, self_ty_adjusted
) && match_trait_method(cx
, call_expr
, &paths
::INTO_ITERATOR
)) {
17 let mut applicability
= Applicability
::MachineApplicable
;
18 let object
= snippet_with_applicability(cx
, self_arg
.span
, "_", &mut applicability
);
21 EXPLICIT_INTO_ITER_LOOP
,
23 "it is more concise to loop over containers instead of using explicit \
25 "to write this more concisely, try",