Avatar ·

如何在 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 中正确地将函数作为参数传递?最好有直观的例子。 <<>>

使用 F traits