Skip to content

NLL: missing "consider using a let binding" message #49821

@nikomatsakis

Description

@nikomatsakis

(NB. This is assuming my in-progress branch)

If you run issue-36082.rs in NLL mode, you get:

> rustc --stage1 issue-36082.rs -Zborrowck=mir error[E0597]: borrowed value does not live long enough --> issue-36082.rs:21:19 | 21 | let val: &_ = x.borrow().0; | ^^^^^^^^^^ - temporary value only lives until here | | | temporary value does not live long enough ... 30 | println!("{}", val); | --- borrow later used here

There is no suggestion about using a let binding to increase the lifetime of the temporary, unlike AST borrowck:

> rustc --stage1 issue-36082.rs error[E0597]: borrowed value does not live long enough --> issue-36082.rs:21:19 | 21 | let val: &_ = x.borrow().0; | ^^^^^^^^^^ - temporary value dropped here while still borrowed | | | temporary value does not live long enough ... 31 | } | - temporary value needs to live until here | = note: consider using a `let` binding to increase its lifetime

That said, this seems like a case where the AST borrowck message could also be improved. I doubt many people understand it very well.

Metadata

Metadata

Assignees

Labels

A-NLLArea: Non-lexical lifetimes (NLL)C-enhancementCategory: An issue proposing an enhancement or a PR with one.NLL-diagnosticsWorking towards the "diagnostic parity" goalT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions