1 note: external requirements
2 --> $DIR/projection-two-region-trait-bound-closure.rs:38:29
4 LL | with_signature(cell, t, |cell, t| require(cell, t));
7 = note: defining type: no_relationships_late::<'_#1r, '_#2r, T>::{closure#0} with closure substs [
9 extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T)),
12 = note: late-bound region is '_#4r
13 = note: number of external vids: 5
14 = note: where <T as Anything<ReEarlyBound(0, 'b), ReEarlyBound(1, 'c)>>::AssocType: '_#3r
16 note: no external requirements
17 --> $DIR/projection-two-region-trait-bound-closure.rs:34:1
19 LL | / fn no_relationships_late<'a, 'b, 'c, T>(cell: Cell<&'a ()>, t: T)
21 LL | | T: Anything<'b, 'c>,
22 | |________________________^
24 = note: defining type: no_relationships_late::<'_#1r, '_#2r, T>
26 error[E0309]: the associated type `<T as Anything<ReEarlyBound(0, 'b), ReEarlyBound(1, 'c)>>::AssocType` may not live long enough
27 --> $DIR/projection-two-region-trait-bound-closure.rs:38:39
29 LL | with_signature(cell, t, |cell, t| require(cell, t));
32 = help: consider adding an explicit lifetime bound `<T as Anything<ReEarlyBound(0, 'b), ReEarlyBound(1, 'c)>>::AssocType: 'a`...
33 = note: ...so that the type `<T as Anything<ReEarlyBound(0, 'b), ReEarlyBound(1, 'c)>>::AssocType` will meet its required lifetime bounds
35 note: external requirements
36 --> $DIR/projection-two-region-trait-bound-closure.rs:48:29
38 LL | with_signature(cell, t, |cell, t| require(cell, t));
41 = note: defining type: no_relationships_early::<'_#1r, '_#2r, '_#3r, T>::{closure#0} with closure substs [
43 extern "rust-call" fn((std::cell::Cell<&'_#4r ()>, T)),
46 = note: number of external vids: 5
47 = note: where <T as Anything<ReEarlyBound(1, 'b), ReEarlyBound(2, 'c)>>::AssocType: '_#4r
49 note: no external requirements
50 --> $DIR/projection-two-region-trait-bound-closure.rs:43:1
52 LL | / fn no_relationships_early<'a, 'b, 'c, T>(cell: Cell<&'a ()>, t: T)
54 LL | | T: Anything<'b, 'c>,
58 = note: defining type: no_relationships_early::<'_#1r, '_#2r, '_#3r, T>
60 error[E0309]: the associated type `<T as Anything<ReEarlyBound(1, 'b), ReEarlyBound(2, 'c)>>::AssocType` may not live long enough
61 --> $DIR/projection-two-region-trait-bound-closure.rs:48:39
63 LL | with_signature(cell, t, |cell, t| require(cell, t));
66 = help: consider adding an explicit lifetime bound `<T as Anything<ReEarlyBound(1, 'b), ReEarlyBound(2, 'c)>>::AssocType: 'a`...
67 = note: ...so that the type `<T as Anything<ReEarlyBound(1, 'b), ReEarlyBound(2, 'c)>>::AssocType` will meet its required lifetime bounds
69 note: external requirements
70 --> $DIR/projection-two-region-trait-bound-closure.rs:61:29
72 LL | with_signature(cell, t, |cell, t| require(cell, t));
75 = note: defining type: projection_outlives::<'_#1r, '_#2r, '_#3r, T>::{closure#0} with closure substs [
77 extern "rust-call" fn((std::cell::Cell<&'_#4r ()>, T)),
80 = note: number of external vids: 5
81 = note: where <T as Anything<ReEarlyBound(1, 'b), ReEarlyBound(2, 'c)>>::AssocType: '_#4r
83 note: no external requirements
84 --> $DIR/projection-two-region-trait-bound-closure.rs:53:1
86 LL | / fn projection_outlives<'a, 'b, 'c, T>(cell: Cell<&'a ()>, t: T)
88 LL | | T: Anything<'b, 'c>,
89 LL | | T::AssocType: 'a,
90 | |_____________________^
92 = note: defining type: projection_outlives::<'_#1r, '_#2r, '_#3r, T>
94 note: external requirements
95 --> $DIR/projection-two-region-trait-bound-closure.rs:70:29
97 LL | with_signature(cell, t, |cell, t| require(cell, t));
100 = note: defining type: elements_outlive1::<'_#1r, '_#2r, '_#3r, T>::{closure#0} with closure substs [
102 extern "rust-call" fn((std::cell::Cell<&'_#4r ()>, T)),
105 = note: number of external vids: 5
106 = note: where <T as Anything<ReEarlyBound(1, 'b), ReEarlyBound(2, 'c)>>::AssocType: '_#4r
108 note: no external requirements
109 --> $DIR/projection-two-region-trait-bound-closure.rs:65:1
111 LL | / fn elements_outlive1<'a, 'b, 'c, T>(cell: Cell<&'a ()>, t: T)
113 LL | | T: Anything<'b, 'c>,
117 = note: defining type: elements_outlive1::<'_#1r, '_#2r, '_#3r, T>
119 note: external requirements
120 --> $DIR/projection-two-region-trait-bound-closure.rs:79:29
122 LL | with_signature(cell, t, |cell, t| require(cell, t));
125 = note: defining type: elements_outlive2::<'_#1r, '_#2r, '_#3r, T>::{closure#0} with closure substs [
127 extern "rust-call" fn((std::cell::Cell<&'_#4r ()>, T)),
130 = note: number of external vids: 5
131 = note: where <T as Anything<ReEarlyBound(1, 'b), ReEarlyBound(2, 'c)>>::AssocType: '_#4r
133 note: no external requirements
134 --> $DIR/projection-two-region-trait-bound-closure.rs:74:1
136 LL | / fn elements_outlive2<'a, 'b, 'c, T>(cell: Cell<&'a ()>, t: T)
138 LL | | T: Anything<'b, 'c>,
142 = note: defining type: elements_outlive2::<'_#1r, '_#2r, '_#3r, T>
144 note: external requirements
145 --> $DIR/projection-two-region-trait-bound-closure.rs:87:29
147 LL | with_signature(cell, t, |cell, t| require(cell, t));
150 = note: defining type: two_regions::<'_#1r, T>::{closure#0} with closure substs [
152 extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T)),
155 = note: late-bound region is '_#3r
156 = note: number of external vids: 4
157 = note: where <T as Anything<ReEarlyBound(0, 'b), ReEarlyBound(0, 'b)>>::AssocType: '_#2r
159 note: no external requirements
160 --> $DIR/projection-two-region-trait-bound-closure.rs:83:1
162 LL | / fn two_regions<'a, 'b, T>(cell: Cell<&'a ()>, t: T)
164 LL | | T: Anything<'b, 'b>,
165 | |________________________^
167 = note: defining type: two_regions::<'_#1r, T>
169 error: lifetime may not live long enough
170 --> $DIR/projection-two-region-trait-bound-closure.rs:87:5
172 LL | fn two_regions<'a, 'b, T>(cell: Cell<&'a ()>, t: T)
173 | -- -- lifetime `'b` defined here
175 | lifetime `'a` defined here
177 LL | with_signature(cell, t, |cell, t| require(cell, t));
178 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ argument requires that `'b` must outlive `'a`
180 = help: consider adding the following bound: `'b: 'a`
181 = note: requirement occurs because of the type `Cell<&'_#8r ()>`, which makes the generic argument `&'_#8r ()` invariant
182 = note: the struct `Cell<T>` is invariant over the parameter `T`
183 = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
185 note: external requirements
186 --> $DIR/projection-two-region-trait-bound-closure.rs:97:29
188 LL | with_signature(cell, t, |cell, t| require(cell, t));
191 = note: defining type: two_regions_outlive::<'_#1r, '_#2r, T>::{closure#0} with closure substs [
193 extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T)),
196 = note: number of external vids: 4
197 = note: where <T as Anything<ReEarlyBound(1, 'b), ReEarlyBound(1, 'b)>>::AssocType: '_#3r
199 note: no external requirements
200 --> $DIR/projection-two-region-trait-bound-closure.rs:92:1
202 LL | / fn two_regions_outlive<'a, 'b, T>(cell: Cell<&'a ()>, t: T)
204 LL | | T: Anything<'b, 'b>,
208 = note: defining type: two_regions_outlive::<'_#1r, '_#2r, T>
210 note: external requirements
211 --> $DIR/projection-two-region-trait-bound-closure.rs:109:29
213 LL | with_signature(cell, t, |cell, t| require(cell, t));
216 = note: defining type: one_region::<'_#1r, T>::{closure#0} with closure substs [
218 extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T)),
221 = note: number of external vids: 3
222 = note: where <T as Anything<ReEarlyBound(0, 'a), ReEarlyBound(0, 'a)>>::AssocType: '_#2r
224 note: no external requirements
225 --> $DIR/projection-two-region-trait-bound-closure.rs:101:1
227 LL | / fn one_region<'a, T>(cell: Cell<&'a ()>, t: T)
229 LL | | T: Anything<'a, 'a>,
230 | |________________________^
232 = note: defining type: one_region::<'_#1r, T>
234 error: aborting due to 3 previous errors
236 For more information about this error, try `rustc --explain E0309`.