mirror of
https://github.com/rust-lang/rust
synced 2024-09-05 16:57:03 +00:00
22 lines
562 B
Rust
22 lines
562 B
Rust
// Tests that bindings to move-by-default values trigger moves of the
|
|
// discriminant. Also tests that the compiler explains the move in
|
|
// terms of the binding, not the discriminant.
|
|
|
|
struct Foo<A> { f: A }
|
|
fn guard(_s: String) -> bool {panic!()}
|
|
fn touch<A>(_a: &A) {}
|
|
|
|
fn f10() {
|
|
let x = Foo {f: "hi".to_string()};
|
|
|
|
let y = match x {
|
|
Foo {f} => {}
|
|
};
|
|
|
|
touch(&x); //~ ERROR borrow of partially moved value: `x`
|
|
//~^ value borrowed here after partial move
|
|
//~| partial move occurs because `x.f` has type `String`
|
|
}
|
|
|
|
fn main() {}
|