- pub test: RegionTest,
-}
-
-/// A "test" that can be applied to some "subject region" `'x`. These are used to
-/// describe type constraints. Tests do not presently affect the
-/// region values that get inferred for each variable; they only
-/// examine the results *after* inference. This means they can
-/// conveniently include disjuction ("a or b must be true").
-#[derive(Clone, Debug)]
-pub enum RegionTest {
- /// The subject region `'x` must by outlived by the given region.
- ///
- /// This test comes from e.g. a where clause like `T: 'a`, which
- /// implies that we know that `T: 'a`. Therefore, if we are trying
- /// to prove that `T: 'x`, we can do so by showing that `'a: 'x`.
- IsOutlivedBy(RegionVid),
-
- /// Any of the given tests are true.
- ///
- /// This test comes from e.g. a where clause like `T: 'a + 'b`,
- /// which implies that we know that `T: 'a` and that `T:
- /// 'b`. Therefore, if we are trying to prove that `T: 'x`, we can
- /// do so by showing that `'a: 'x` *or* `'b: 'x`.
- Any(Vec<RegionTest>),
-
- /// All of the given tests are true.
- All(Vec<RegionTest>),