// 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!(); | |
} | |
} | |
} |