extern crate clint;
use clint::Handler;
static mut HANDLER: Handler = Handler::new();
fn main() {
need_move();
borrow_error();
no_borrow_needed();
}
fn need_move() {
let x = vec![1, 2, 3];
let c = || {
println!("x(h-c): {:?}", x); };
unsafe {
HANDLER.replace(&c);
HANDLER.call();
HANDLER.call();
}
println!("x(h-o): {:?}", x);
}
fn borrow_error() {
let x = vec![1, 2, 3];
let c = move || {
println!("x(h-c): {:?}", x);
};
unsafe {
HANDLER.replace(&c);
HANDLER.call();
HANDLER.call();
}
println!("x(h-o): {:?}", x); }
fn no_borrow_needed() {
let x = vec![1, 2, 3];
let c = || {
println!("x(h-c): hi!");
};
unsafe {
HANDLER.replace(&c);
HANDLER.call();
HANDLER.call();
}
println!("x(h-o): {:?}", x);
}