|  | // Test that we do not permit moves from &[] matched by a vec pattern. | 
|  |  | 
|  | #[derive(Clone, Debug)] | 
|  | struct Foo { | 
|  | string: String | 
|  | } | 
|  |  | 
|  | pub fn main() { | 
|  | let x = vec![ | 
|  | Foo { string: "foo".to_string() }, | 
|  | Foo { string: "bar".to_string() }, | 
|  | Foo { string: "baz".to_string() } | 
|  | ]; | 
|  | let x: &[Foo] = &x; | 
|  | match *x { | 
|  | [_, ref tail @ ..] => { | 
|  | match tail { | 
|  | //~^ ERROR cannot move out of type `[Foo]` | 
|  | &[Foo { string: a }, | 
|  | Foo { string: b }] => { | 
|  | } | 
|  | _ => { | 
|  | unreachable!(); | 
|  | } | 
|  | } | 
|  | let z = tail[0].clone(); | 
|  | println!("{:?}", z); | 
|  | } | 
|  | _ => { | 
|  | unreachable!(); | 
|  | } | 
|  | } | 
|  | } |