|  | 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`. |