diff --git a/src/librustc_borrowck/borrowck/gather_loans/move_error.rs b/src/librustc_borrowck/borrowck/gather_loans/move_error.rs index 9a72f3866a0e1..b7ce9d982331c 100644 --- a/src/librustc_borrowck/borrowck/gather_loans/move_error.rs +++ b/src/librustc_borrowck/borrowck/gather_loans/move_error.rs @@ -73,9 +73,16 @@ fn report_move_errors<'a, 'tcx>(bccx: &BorrowckCtxt<'a, 'tcx>, errors: &Vec { + Some(&MovePlace { pat_source: PatternSource::LetDecl(ref e), .. }) => { // ignore patterns that are found at the top-level of a `let`; // see `get_pattern_source()` for details + let initializer = + e.init.as_ref().expect("should have an initializer to get an error"); + if let Ok(snippet) = bccx.tcx.sess.codemap().span_to_snippet(initializer.span) { + err.span_suggestion(initializer.span, + "consider using a reference instead", + format!("&{}", snippet)); + } } _ => { for move_to in &error.move_to_places { diff --git a/src/test/ui/issue-40402-ref-hints/issue-40402-1.stderr b/src/test/ui/issue-40402-ref-hints/issue-40402-1.stderr index 5e743b6bd3fe7..de110ac12b703 100644 --- a/src/test/ui/issue-40402-ref-hints/issue-40402-1.stderr +++ b/src/test/ui/issue-40402-ref-hints/issue-40402-1.stderr @@ -2,7 +2,10 @@ error[E0507]: cannot move out of indexed content --> $DIR/issue-40402-1.rs:19:13 | 19 | let e = f.v[0]; - | ^^^^^^ cannot move out of indexed content + | ^^^^^^ + | | + | help: consider using a reference instead `&f.v[0]` + | cannot move out of indexed content error: aborting due to previous error