diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2018-12-16 14:08:24 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-12-16 14:08:24 +0100 |
| commit | af3f9072f541fd9d8da32d981e260df91772fbf8 (patch) | |
| tree | 6c02e1796cf1efeaf8646f6a0e4bd8ec77886b78 | |
| parent | 3552499010ccac7f2895e417d9c7f23c05d3447c (diff) | |
| parent | 76cb35ee8938c4815b8c77bcd97c68af0c67c5a5 (diff) | |
| download | rust-af3f9072f541fd9d8da32d981e260df91772fbf8.tar.gz rust-af3f9072f541fd9d8da32d981e260df91772fbf8.zip | |
Rollup merge of #56742 - ljedrz:remove_query_response_box, r=oli-obk
infer: remove Box from a returned Iterator
| -rw-r--r-- | src/librustc/infer/canonical/query_response.rs | 51 |
1 files changed, 25 insertions, 26 deletions
diff --git a/src/librustc/infer/canonical/query_response.rs b/src/librustc/infer/canonical/query_response.rs index 8d2b1d74c55..43bc9d88895 100644 --- a/src/librustc/infer/canonical/query_response.rs +++ b/src/librustc/infer/canonical/query_response.rs @@ -36,6 +36,7 @@ use traits::{Obligation, ObligationCause, PredicateObligation}; use ty::fold::TypeFoldable; use ty::subst::{Kind, UnpackedKind}; use ty::{self, BoundVar, Lift, Ty, TyCtxt}; +use util::captures::Captures; impl<'cx, 'gcx, 'tcx> InferCtxtBuilder<'cx, 'gcx, 'tcx> { /// The "main method" for a canonicalized trait query. Given the @@ -527,32 +528,30 @@ impl<'cx, 'gcx, 'tcx> InferCtxt<'cx, 'gcx, 'tcx> { param_env: ty::ParamEnv<'tcx>, unsubstituted_region_constraints: &'a [QueryRegionConstraint<'tcx>], result_subst: &'a CanonicalVarValues<'tcx>, - ) -> impl Iterator<Item = PredicateObligation<'tcx>> + 'a { - Box::new( - unsubstituted_region_constraints - .iter() - .map(move |constraint| { - let constraint = substitute_value(self.tcx, result_subst, constraint); - let &ty::OutlivesPredicate(k1, r2) = constraint.skip_binder(); // restored below - - Obligation::new( - cause.clone(), - param_env, - match k1.unpack() { - UnpackedKind::Lifetime(r1) => ty::Predicate::RegionOutlives( - ty::Binder::bind( - ty::OutlivesPredicate(r1, r2) - ) - ), - UnpackedKind::Type(t1) => ty::Predicate::TypeOutlives( - ty::Binder::bind( - ty::OutlivesPredicate(t1, r2) - ) - ), - } - ) - }) - ) as Box<dyn Iterator<Item = _>> + ) -> impl Iterator<Item = PredicateObligation<'tcx>> + 'a + Captures<'gcx> { + unsubstituted_region_constraints + .iter() + .map(move |constraint| { + let constraint = substitute_value(self.tcx, result_subst, constraint); + let &ty::OutlivesPredicate(k1, r2) = constraint.skip_binder(); // restored below + + Obligation::new( + cause.clone(), + param_env, + match k1.unpack() { + UnpackedKind::Lifetime(r1) => ty::Predicate::RegionOutlives( + ty::Binder::bind( + ty::OutlivesPredicate(r1, r2) + ) + ), + UnpackedKind::Type(t1) => ty::Predicate::TypeOutlives( + ty::Binder::bind( + ty::OutlivesPredicate(t1, r2) + ) + ), + } + ) + }) } /// Given two sets of values for the same set of canonical variables, unify them. |
