-error[E0623]: lifetime mismatch
+error[E0491]: in type `&'b &'a usize`, reference has a longer lifetime than the data it references
--> $DIR/regions-free-region-ordering-caller.rs:11:12
|
-LL | fn call2<'a, 'b>(a: &'a usize, b: &'b usize) {
- | --------- ---------
- | |
- | these two types are declared with different lifetimes...
LL | let z: Option<&'b &'a usize> = None;
- | ^^^^^^^^^^^^^^^^^^^^^ ...but data from `a` flows into `b` here
+ | ^^^^^^^^^^^^^^^^^^^^^
+ |
+note: the pointer is valid for the lifetime `'b` as defined on the function body at 10:14
+ --> $DIR/regions-free-region-ordering-caller.rs:10:14
+ |
+LL | fn call2<'a, 'b>(a: &'a usize, b: &'b usize) {
+ | ^^
+note: but the referenced data is only valid for the lifetime `'a` as defined on the function body at 10:10
+ --> $DIR/regions-free-region-ordering-caller.rs:10:10
+ |
+LL | fn call2<'a, 'b>(a: &'a usize, b: &'b usize) {
+ | ^^
-error[E0623]: lifetime mismatch
+error[E0491]: in type `&'b Paramd<'a>`, reference has a longer lifetime than the data it references
--> $DIR/regions-free-region-ordering-caller.rs:17:12
|
-LL | fn call3<'a, 'b>(a: &'a usize, b: &'b usize) {
- | --------- ---------
- | |
- | these two types are declared with different lifetimes...
-LL | let y: Paramd<'a> = Paramd { x: a };
LL | let z: Option<&'b Paramd<'a>> = None;
- | ^^^^^^^^^^^^^^^^^^^^^^ ...but data from `a` flows into `b` here
+ | ^^^^^^^^^^^^^^^^^^^^^^
+ |
+note: the pointer is valid for the lifetime `'b` as defined on the function body at 15:14
+ --> $DIR/regions-free-region-ordering-caller.rs:15:14
+ |
+LL | fn call3<'a, 'b>(a: &'a usize, b: &'b usize) {
+ | ^^
+note: but the referenced data is only valid for the lifetime `'a` as defined on the function body at 15:10
+ --> $DIR/regions-free-region-ordering-caller.rs:15:10
+ |
+LL | fn call3<'a, 'b>(a: &'a usize, b: &'b usize) {
+ | ^^
-error[E0623]: lifetime mismatch
+error[E0491]: in type `&'a &'b usize`, reference has a longer lifetime than the data it references
--> $DIR/regions-free-region-ordering-caller.rs:22:12
|
-LL | fn call4<'a, 'b>(a: &'a usize, b: &'b usize) {
- | --------- --------- these two types are declared with different lifetimes...
LL | let z: Option<&'a &'b usize> = None;
- | ^^^^^^^^^^^^^^^^^^^^^ ...but data from `b` flows into `a` here
+ | ^^^^^^^^^^^^^^^^^^^^^
+ |
+note: the pointer is valid for the lifetime `'a` as defined on the function body at 21:10
+ --> $DIR/regions-free-region-ordering-caller.rs:21:10
+ |
+LL | fn call4<'a, 'b>(a: &'a usize, b: &'b usize) {
+ | ^^
+note: but the referenced data is only valid for the lifetime `'b` as defined on the function body at 21:14
+ --> $DIR/regions-free-region-ordering-caller.rs:21:14
+ |
+LL | fn call4<'a, 'b>(a: &'a usize, b: &'b usize) {
+ | ^^
error: aborting due to 3 previous errors
-For more information about this error, try `rustc --explain E0623`.
+For more information about this error, try `rustc --explain E0491`.