error[E0382]: use of moved value: `s` --> $DIR/issue-29723.rs:12:13 | LL | let s = String::new(); | - move occurs because `s` has type `String`, which does not implement the `Copy` trait LL | let _s = match 0 { LL | 0 if { drop(s); false } => String::from("oops"), | - value moved here ... LL | s | ^ value used here after move | help: consider cloning the value if the performance cost is acceptable | LL | 0 if { drop(s.clone()); false } => String::from("oops"), | ++++++++ error[E0382]: use of moved value: `s` --> $DIR/issue-29723.rs:20:14 | LL | let s = String::new(); | - move occurs because `s` has type `String`, which does not implement the `Copy` trait LL | let _s = match 0 { LL | 0 if let Some(()) = { drop(s); None } => String::from("oops"), | - value moved here LL | _ => s | ^ value used here after move | help: consider cloning the value if the performance cost is acceptable | LL | 0 if let Some(()) = { drop(s.clone()); None } => String::from("oops"), | ++++++++ error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0382`.