#![feature(deref_patterns)] #![allow(incomplete_features)] use std::rc::Rc; struct Struct; fn cant_move_out_vec(b: Vec) -> Struct { match b { //~^ ERROR: cannot move out of type `[Struct]`, a non-copy slice deref!([x]) => x, _ => panic!(), } } fn cant_move_out_rc(rc: Rc) -> Struct { match rc { //~^ ERROR: cannot move out of a shared reference deref!(x) => x, _ => unreachable!(), } } fn cant_move_out_vec_implicit(b: Vec) -> Struct { match b { //~^ ERROR: cannot move out of type `[Struct]`, a non-copy slice [x] => x, _ => panic!(), } } struct Container(Struct); fn cant_move_out_rc_implicit(rc: Rc) -> Struct { match rc { //~^ ERROR: cannot move out of a shared reference Container(x) => x, _ => unreachable!(), } } fn main() {}