9f730e92f2
``` error: lifetime may not live long enough --> $DIR/ex3-both-anon-regions-both-are-structs-2.rs:7:5 | LL | fn foo(mut x: Ref, y: Ref) { | ----- - has type `Ref<'_, '1>` | | | has type `Ref<'_, '2>` LL | x.b = y.b; | ^^^^^^^^^ assignment requires that `'1` must outlive `'2` | help: consider introducing a named lifetime parameter | LL | fn foo<'a>(mut x: Ref<'a, 'a>, y: Ref<'a, 'a>) { | ++++ ++++++++ ++++++++ ``` As can be seen above, it currently doesn't try to compare the `ty::Ty` lifetimes that diverged vs the `hir::Ty` to correctly suggest the following ``` help: consider introducing a named lifetime parameter | LL | fn foo<'a>(mut x: Ref<'_, 'a>, y: Ref<'_, 'a>) { | ++++ ++++++++ ++++++++ ``` but I believe this to still be an improvement over the status quo. CC #40990.
18 lines
532 B
Plaintext
18 lines
532 B
Plaintext
error: lifetime may not live long enough
|
|
--> $DIR/ex3-both-anon-regions-both-are-structs.rs:6:5
|
|
|
|
|
LL | fn foo(mut x: Vec<Ref>, y: Ref) {
|
|
| ----- - has type `Ref<'1>`
|
|
| |
|
|
| has type `Vec<Ref<'2>>`
|
|
LL | x.push(y);
|
|
| ^^^^^^^^^ argument requires that `'1` must outlive `'2`
|
|
|
|
|
help: consider introducing a named lifetime parameter
|
|
|
|
|
LL | fn foo<'a>(mut x: Vec<Ref<'a>>, y: Ref<'a>) {
|
|
| ++++ ++++ ++++
|
|
|
|
error: aborting due to 1 previous error
|
|
|