如何在 Rust 中将函数作为参数传递?
大家好!我刚开始学习 Rust,遇到了一个问题。在其他语言中,比如 Python 或 JavaScript,我可以轻松地将函数作为参数传递给另一个函数。例如:
```python
def apply(func, x):
return func(x)
def double(x):
return x * 2
result = apply(double, 5)
```
在 Rust 中,我尝试做类似的事情,但编译器报错。这是我的代码:
```rust
fn apply(func: ???, x: i32) -> i32 {
func(x)
}
fn double(x: i32) -> i32 {
x * 2
}
fn main() {
let result = apply(double, 5);
println!("{}", result);
}
```
我不明白应该为参数 `func` 指定什么类型。我试过写 `fn(i32) -> i32`,但没成功。文档中提到了 `Fn`、`FnMut` 和 `FnOnce` 这些 trait,但我搞混了,不知道该用哪个以及如何正确声明这样的函数。请告诉我如何在 Rust 中正确地将函数作为参数传递?最好有直观的例子。
<<>>