Skip to content

Commit 8ffec33

Browse files
committed
Remove intermediate vec
1 parent fdc9a64 commit 8ffec33

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

clippy_lints/src/needless_pass_by_value.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,14 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NeedlessPassByValue {
8989

9090
let preds = traits::elaborate_predicates(cx.tcx, cx.param_env.caller_bounds.to_vec())
9191
.filter(|p| !p.is_global())
92-
.collect::<Vec<_>>();
93-
let preds = preds
94-
.iter()
95-
.filter_map(|pred| if let ty::Predicate::Trait(ref poly_trait_ref) = *pred {
96-
Some(poly_trait_ref.skip_binder())
92+
.filter_map(|pred| if let ty::Predicate::Trait(poly_trait_ref) = pred {
93+
if poly_trait_ref.def_id() == sized_trait || poly_trait_ref.skip_binder().has_escaping_regions() {
94+
return None;
95+
}
96+
Some(poly_trait_ref)
9797
} else {
9898
None
9999
})
100-
.filter(|t| t.def_id() != sized_trait && !t.has_escaping_regions())
101100
.collect::<Vec<_>>();
102101

103102
// Collect moved variables and spans which will need dereferencings from the
@@ -128,7 +127,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NeedlessPassByValue {
128127
let (implements_borrow_trait, all_borrowable_trait) = {
129128
let preds = preds
130129
.iter()
131-
.filter(|t| t.self_ty() == ty)
130+
.filter(|t| t.skip_binder().self_ty() == ty)
132131
.collect::<Vec<_>>();
133132

134133
(
@@ -138,7 +137,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NeedlessPassByValue {
138137
cx,
139138
cx.tcx.mk_imm_ref(&RegionKind::ReErased, ty),
140139
t.def_id(),
141-
&t.input_types().skip(1).collect::<Vec<_>>(),
140+
&t.skip_binder().input_types().skip(1).collect::<Vec<_>>(),
142141
)
143142
}),
144143
)

0 commit comments

Comments
 (0)