考虑下面这个Rust程序:
fn call_twice<A>(val: A, f: fn(A) -> A) -> A {
f(f(val))
}
fn main() {
fn double(x: int) -> int {x + x};
println!("Res is {}", call_twice(10i, double));
// println!("Res is {}", call_twice(10i, (x: int) -> int {x + x}));
// ^ this line will fail
}
为什么我可以将double
传递给函数,但不能内联?有没有一种好方法可以在不定义函数的情况下实现相同的行为?