error[E0382]: use of partially moved value: `s` --> $DIR/move-in-pattern.rs:19:9 | LL | if let Some(x) = s { | - value partially moved here ... LL | foo(s); | ^ value used here after partial move | = note: partial move occurs because value has type `S`, which does not implement the `Copy` trait help: borrow this binding in the pattern to avoid moving the value | LL | if let Some(ref x) = s { | +++ error[E0382]: use of partially moved value: `e` --> $DIR/move-in-pattern.rs:23:9 | LL | let E::V { s: x } = e; | - value partially moved here LL | let _ = x; LL | bar(e); | ^ value used here after partial move | = note: partial move occurs because value has type `S`, which does not implement the `Copy` trait help: borrow this binding in the pattern to avoid moving the value | LL | let E::V { s: ref x } = e; | +++ error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0382`.