note: External requirements
  --> $DIR/projection-one-region-closure.rs:45:29
   |
LL |     with_signature(cell, t, |cell, t| require(cell, t));
   |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: defining type: DefId(0:19 ~ projection_one_region_closure[317d]::no_relationships_late[0]::{{closure}}[0]) with closure substs [
               '_#1r,
               T,
               i32,
               extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T)),
           ]
   = note: late-bound region is '_#3r
   = note: number of external vids: 4
   = note: where T: '_#2r
   = note: where '_#1r: '_#2r

note: No external requirements
  --> $DIR/projection-one-region-closure.rs:41:1
   |
LL | / fn no_relationships_late<'a, 'b, T>(cell: Cell<&'a ()>, t: T)
LL | | where
LL | |     T: Anything<'b>,
LL | | {
...  |
LL | |
LL | | }
   | |_^
   |
   = note: defining type: DefId(0:15 ~ projection_one_region_closure[317d]::no_relationships_late[0]) with substs [
               '_#1r,
               T,
           ]

error[E0309]: the parameter type `T` may not live long enough
  --> $DIR/projection-one-region-closure.rs:45:29
   |
LL |     with_signature(cell, t, |cell, t| require(cell, t));
   |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: consider adding an explicit lifetime bound `T: ReFree(DefId(0:15 ~ projection_one_region_closure[317d]::no_relationships_late[0]), BrNamed(DefId(0:16 ~ projection_one_region_closure[317d]::no_relationships_late[0]::'a[0]), 'a))`...

error: lifetime may not live long enough
  --> $DIR/projection-one-region-closure.rs:45:39
   |
LL | fn no_relationships_late<'a, 'b, T>(cell: Cell<&'a ()>, t: T)
   |                          --  -- lifetime `'b` defined here
   |                          |
   |                          lifetime `'a` defined here
...
LL |     with_signature(cell, t, |cell, t| require(cell, t));
   |                                       ^^^^^^^^^^^^^^^^ argument requires that `'b` must outlive `'a`
   |
   = help: consider adding the following bound: `'b: 'a`

note: External requirements
  --> $DIR/projection-one-region-closure.rs:56:29
   |
LL |     with_signature(cell, t, |cell, t| require(cell, t));
   |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: defining type: DefId(0:24 ~ projection_one_region_closure[317d]::no_relationships_early[0]::{{closure}}[0]) with closure substs [
               '_#1r,
               '_#2r,
               T,
               i32,
               extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T)),
           ]
   = note: number of external vids: 4
   = note: where T: '_#3r
   = note: where '_#2r: '_#3r

note: No external requirements
  --> $DIR/projection-one-region-closure.rs:51:1
   |
LL | / fn no_relationships_early<'a, 'b, T>(cell: Cell<&'a ()>, t: T)
LL | | where
LL | |     T: Anything<'b>,
LL | |     'a: 'a,
...  |
LL | |
LL | | }
   | |_^
   |
   = note: defining type: DefId(0:20 ~ projection_one_region_closure[317d]::no_relationships_early[0]) with substs [
               '_#1r,
               '_#2r,
               T,
           ]

error[E0309]: the parameter type `T` may not live long enough
  --> $DIR/projection-one-region-closure.rs:56:29
   |
LL |     with_signature(cell, t, |cell, t| require(cell, t));
   |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: consider adding an explicit lifetime bound `T: ReEarlyBound(0, 'a)`...

error: lifetime may not live long enough
  --> $DIR/projection-one-region-closure.rs:56:39
   |
LL | fn no_relationships_early<'a, 'b, T>(cell: Cell<&'a ()>, t: T)
   |                           --  -- lifetime `'b` defined here
   |                           |
   |                           lifetime `'a` defined here
...
LL |     with_signature(cell, t, |cell, t| require(cell, t));
   |                                       ^^^^^^^^^^^^^^^^ argument requires that `'b` must outlive `'a`
   |
   = help: consider adding the following bound: `'b: 'a`

note: External requirements
  --> $DIR/projection-one-region-closure.rs:70:29
   |
LL |     with_signature(cell, t, |cell, t| require(cell, t));
   |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: defining type: DefId(0:29 ~ projection_one_region_closure[317d]::projection_outlives[0]::{{closure}}[0]) with closure substs [
               '_#1r,
               '_#2r,
               T,
               i32,
               extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T)),
           ]
   = note: number of external vids: 4
   = note: where <T as Anything<ReClosureBound('_#2r)>>::AssocType: '_#3r

note: No external requirements
  --> $DIR/projection-one-region-closure.rs:62:1
   |
LL | / fn projection_outlives<'a, 'b, T>(cell: Cell<&'a ()>, t: T)
LL | | where
LL | |     T: Anything<'b>,
LL | |     T::AssocType: 'a,
...  |
LL | |     with_signature(cell, t, |cell, t| require(cell, t));
LL | | }
   | |_^
   |
   = note: defining type: DefId(0:25 ~ projection_one_region_closure[317d]::projection_outlives[0]) with substs [
               '_#1r,
               '_#2r,
               T,
           ]

note: External requirements
  --> $DIR/projection-one-region-closure.rs:80:29
   |
LL |     with_signature(cell, t, |cell, t| require(cell, t));
   |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: defining type: DefId(0:34 ~ projection_one_region_closure[317d]::elements_outlive[0]::{{closure}}[0]) with closure substs [
               '_#1r,
               '_#2r,
               T,
               i32,
               extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T)),
           ]
   = note: number of external vids: 4
   = note: where T: '_#3r
   = note: where '_#2r: '_#3r

note: No external requirements
  --> $DIR/projection-one-region-closure.rs:74:1
   |
LL | / fn elements_outlive<'a, 'b, T>(cell: Cell<&'a ()>, t: T)
LL | | where
LL | |     T: Anything<'b>,
LL | |     T: 'a,
...  |
LL | |     with_signature(cell, t, |cell, t| require(cell, t));
LL | | }
   | |_^
   |
   = note: defining type: DefId(0:30 ~ projection_one_region_closure[317d]::elements_outlive[0]) with substs [
               '_#1r,
               '_#2r,
               T,
           ]

error: aborting due to 4 previous errors

For more information about this error, try `rustc --explain E0309`.
