// 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); | |
}); | |
} |