}, " (into closure)"),
};
- let extra_move_label = if need_note {
- format!(" because it has type `{}`, which does not implement the `Copy` trait",
- moved_lp.ty)
- } else {
- String::new()
- };
// Annotate the use and the move in the span. Watch out for
// the case where the use and the move are the same. This
// means the use is in a loop.
format!("value moved{} here in previous iteration of loop{}",
move_note,
extra_move_label));
+
+ if need_note {
+ err.note(&format!("value moved because it has type `{}`, \
+ which does not implement the `Copy` trait",
+ moved_lp.ty)
+ }
err
} else {
- err.span_label(use_span, format!("value {} here after move", verb_participle))
- .span_label(move_span, format!("value moved{} here{}", move_note, extra_move_label));
+ err.span_label(use_span, format!("value {} here after move", verb_participle));
+ let extra_move_label = if need_note {
+ &format!(" because it has type `{}`, which does not implement the `Copy` trait",
+ moved_lp.ty)
+ } else {
+ ""
+ };
+ err.span_label(move_span,format!("value moved{} here{}", move_note, extra_move_label));
err
};
--> $DIR/issue-41962.rs:15:21
|
15 | if let Some(thing) = maybe {
- | ^^^^^ value moved here in previous iteration of loop because it has type `std::vec::Vec<bool>`, which does not implement the `Copy` trait
+ | ^^^^^ value moved here in previous iteration of loop
+ = note: value moved because it has type `std::vec::Vec<bool>`, which does not implement the `Copy` trait
error: aborting due to 2 previous errors