29 lines
623 B
Rust
29 lines
623 B
Rust
|
// Moving from a reference/raw pointer should be an error, even when they're
|
||
|
// the field of a union.
|
||
|
|
||
|
union Pointers {
|
||
|
a: &'static String,
|
||
|
b: &'static mut String,
|
||
|
c: *const String,
|
||
|
d: *mut String,
|
||
|
}
|
||
|
|
||
|
unsafe fn move_ref(u: Pointers) -> String {
|
||
|
*u.a
|
||
|
//~^ ERROR cannot move out of `*u.a`
|
||
|
}
|
||
|
unsafe fn move_ref_mut(u: Pointers) -> String {
|
||
|
*u.b
|
||
|
//~^ ERROR cannot move out of `*u.b`
|
||
|
}
|
||
|
unsafe fn move_ptr(u: Pointers) -> String {
|
||
|
*u.c
|
||
|
//~^ ERROR cannot move out of `*u.c`
|
||
|
}
|
||
|
unsafe fn move_ptr_mut(u: Pointers) -> String {
|
||
|
*u.d
|
||
|
//~^ ERROR cannot move out of `*u.d`
|
||
|
}
|
||
|
|
||
|
fn main() {}
|