| // Testing guarantees provided by once functions. | |
| // This program would segfault if it were legal. | |
| use std::sync::Arc; | |
| fn foo<F:FnOnce()>(blk: F) { | |
| blk(); | |
| blk(); //~ ERROR use of moved value | |
| } | |
| fn main() { | |
| let x = Arc::new(true); | |
| foo(move|| { | |
| assert!(*x); | |
| drop(x); | |
| }); | |
| } |