error[E0382]: use of moved value: `my_str` --> $DIR/borrowck-drop-from-guard.rs:11:23 | LL | let my_str = "hello".to_owned(); | ------ move occurs because `my_str` has type `String`, which does not implement the `Copy` trait LL | match Some(42) { LL | Some(_) if { drop(my_str); false } => {} | ------ value moved here LL | Some(_) => {} LL | None => { foo(my_str); } | ^^^^^^ value used here after move | help: consider cloning the value if the performance cost is acceptable | LL | Some(_) if { drop(my_str.clone()); false } => {} | ++++++++ error[E0382]: use of moved value: `my_str` --> $DIR/borrowck-drop-from-guard.rs:18:23 | LL | let my_str = "hello".to_owned(); | ------ move occurs because `my_str` has type `String`, which does not implement the `Copy` trait LL | match Some(42) { LL | Some(_) if let Some(()) = { drop(my_str); None } => {} | ------ value moved here LL | Some(_) => {} LL | None => { foo(my_str); } | ^^^^^^ value used here after move | help: consider cloning the value if the performance cost is acceptable | LL | Some(_) if let Some(()) = { drop(my_str.clone()); None } => {} | ++++++++ error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0382`.