diff --git a/src/librustc/hir/lowering.rs b/src/librustc/hir/lowering.rs
index 4d51126621d7d..e99d65024967b 100644
--- a/src/librustc/hir/lowering.rs
+++ b/src/librustc/hir/lowering.rs
@@ -60,7 +60,6 @@ use util::nodemap::{DefIdMap, NodeMap};
use std::collections::BTreeMap;
use std::fmt::Debug;
-use std::iter;
use std::mem;
use smallvec::SmallVec;
use syntax::attr;
@@ -3888,9 +3887,7 @@ impl<'a> LoweringContext<'a> {
.collect::
>();
let is_unit = fields.is_empty();
- let struct_path = iter::once("ops")
- .chain(iter::once(path))
- .collect::>();
+ let struct_path = ["ops", path];
let struct_path = self.std_path(e.span, &struct_path, None, is_unit);
let struct_path = hir::QPath::Resolved(None, P(struct_path));
diff --git a/src/librustc_traits/lowering.rs b/src/librustc_traits/lowering.rs
index 181106d3f84bf..1e3f0a21cefb3 100644
--- a/src/librustc_traits/lowering.rs
+++ b/src/librustc_traits/lowering.rs
@@ -306,8 +306,7 @@ fn program_clauses_for_trait<'a, 'tcx>(
let wf_conditions = iter::once(ty::Binder::dummy(trait_pred.lower()))
.chain(
where_clauses
- .iter()
- .cloned()
+ .into_iter()
.map(|wc| wc.map_bound(|goal| goal.into_well_formed_goal()))
);
@@ -350,15 +349,13 @@ fn program_clauses_for_impl<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, def_id: DefId
// `WC`
let where_clauses = tcx.predicates_of(def_id).predicates
.into_iter()
- .map(|(wc, _)| wc.lower())
- .collect::>();
+ .map(|(wc, _)| wc.lower());
// `Implemented(A0: Trait) :- WC`
let clause = ProgramClause {
goal: trait_pred,
hypotheses: tcx.mk_goals(
where_clauses
- .into_iter()
.map(|wc| tcx.mk_goal(GoalKind::from_poly_domain_goal(wc, tcx))),
),
};
diff --git a/src/librustc_typeck/check/demand.rs b/src/librustc_typeck/check/demand.rs
index 85b6bcbd144fc..d82d36a1937bf 100644
--- a/src/librustc_typeck/check/demand.rs
+++ b/src/librustc_typeck/check/demand.rs
@@ -115,7 +115,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
// field is of the found type, suggest such variants. See Issue
// #42764.
if let ty::Adt(expected_adt, substs) = expected.sty {
- let compatible_variants = expected_adt.variants
+ let mut compatible_variants = expected_adt.variants
.iter()
.filter(|variant| variant.fields.len() == 1)
.filter_map(|variant| {
@@ -127,12 +127,12 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
} else {
None
}
- }).collect::>();
+ }).peekable();
- if !compatible_variants.is_empty() {
+ if compatible_variants.peek().is_some() {
let expr_text = print::to_string(print::NO_ANN, |s| s.print_expr(expr));
- let suggestions = compatible_variants.iter()
- .map(|v| format!("{}({})", v, expr_text)).collect::>();
+ let suggestions = compatible_variants.map(|v|
+ format!("{}({})", v, expr_text)).collect::>();
err.span_suggestions_with_applicability(
expr.span,
"try using a variant of the expected type",