use std;

fn asSendfn( f : fn~()->uint ) -> uint {
   ret f();
}

fn asLambda( f : fn@()->uint ) -> uint {
   ret f();
}

fn asBlock( f : fn&()->uint ) -> uint {
   ret f();
}

fn asAny( f : fn()->uint ) -> uint {
   ret f();
}

fn main() {
   let x = asSendfn(|| 22u);
   assert(x == 22u);
   let x = asLambda(|| 22u);
   assert(x == 22u);
   let x = asBlock(|| 22u);
   assert(x == 22u);
}
