error[E0509]: cannot move out of type `S`, which implements the `Drop` trait --> $DIR/borrowck-move-out-of-struct-with-dtor.rs:10:11 | LL | match (S {f:"foo".to_string()}) { | ^^^^^^^^^^^^^^^^^^^^^^^^^ cannot move out of here LL | //[mir]~^ ERROR [E0509] LL | S {f:_s} => {} | -- data moved here | note: move occurs because `_s` has type `std::string::String`, which does not implement the `Copy` trait --> $DIR/borrowck-move-out-of-struct-with-dtor.rs:12:14 | LL | S {f:_s} => {} | ^^ error[E0509]: cannot move out of type `S`, which implements the `Drop` trait --> $DIR/borrowck-move-out-of-struct-with-dtor.rs:18:20 | LL | let S {f:_s} = S {f:"foo".to_string()}; | -- ^^^^^^^^^^^^^^^^^^^^^^^ cannot move out of here | | | data moved here | note: move occurs because `_s` has type `std::string::String`, which does not implement the `Copy` trait --> $DIR/borrowck-move-out-of-struct-with-dtor.rs:18:14 | LL | let S {f:_s} = S {f:"foo".to_string()}; | ^^ error[E0509]: cannot move out of type `S`, which implements the `Drop` trait --> $DIR/borrowck-move-out-of-struct-with-dtor.rs:23:19 | LL | fn move_in_fn_arg(S {f:_s}: S) { | ^^^^^--^ | | | | | data moved here | cannot move out of here | note: move occurs because `_s` has type `std::string::String`, which does not implement the `Copy` trait --> $DIR/borrowck-move-out-of-struct-with-dtor.rs:23:24 | LL | fn move_in_fn_arg(S {f:_s}: S) { | ^^ error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0509`.