```rust struct Foo([u8;100]); static mut F: *const Foo = std::ptr::null(); fn escape(x: &Foo) { unsafe { F = x as _; } } fn move_arg(mut x: Foo) { unsafe { x.0[0] = 1; assert_eq!((*F).0[0], 0); } } fn src(x: Foo) { escape(&x); move_arg(x); } fn main() { src(Foo([0;100])); } ``` (via [Zulip](https://rust-lang.zulipchat.com/#narrow/channel/136281-t-opsem/topic/Semantics.20of.20moves))