error[E0509]: cannot move out of type `S`, which implements the `Drop` trait --> $DIR/borrowck-move-out-of-tuple-struct-with-dtor.rs:9:11 | LL | match S("foo".to_string()) { | ^^^^^^^^^^^^^^^^^^^^ cannot move out of here LL | LL | S(_s) => {} | -- | | | data moved here | move occurs because `_s` has type `String`, which does not implement the `Copy` trait | help: consider borrowing the pattern binding | LL | S(ref _s) => {} | +++ error[E0509]: cannot move out of type `S`, which implements the `Drop` trait --> $DIR/borrowck-move-out-of-tuple-struct-with-dtor.rs:16:17 | LL | let S(_s) = S("foo".to_string()); | -- ^^^^^^^^^^^^^^^^^^^^ cannot move out of here | | | data moved here | move occurs because `_s` has type `String`, which does not implement the `Copy` trait | help: consider borrowing the pattern binding | LL | let S(ref _s) = S("foo".to_string()); | +++ error[E0509]: cannot move out of type `S`, which implements the `Drop` trait --> $DIR/borrowck-move-out-of-tuple-struct-with-dtor.rs:20:19 | LL | fn move_in_fn_arg(S(_s): S) { | ^^--^ | | | | | data moved here | | move occurs because `_s` has type `String`, which does not implement the `Copy` trait | cannot move out of here | help: consider borrowing the pattern binding | LL | fn move_in_fn_arg(S(ref _s): S) { | +++ error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0509`.