Avatar ·

如何在 Rust 中将函数作为参数传递?

大家好!我刚开始学习 Rust,遇到了一个看似简单但找不到正确解决方案的问题。我想编写一个接受另一个函数作为参数的函数,以使代码更灵活。 以下是我尝试做的: ```rust fn apply_twice(f: ???, x: i32) -> i32 { f(f(x)) } fn add_one(x: i32) -> i32 { x + 1 } fn main() { let result = apply_twice(add_one, 5); println!("{}", result); // 期望输出 7 } ``` 我不明白应该为参数 `f` 指定什么类型。我尝试过 `fn(i32) -> i32`,但编译器报错。我还听说过闭包(closures)和 trait `Fn`、`FnMut`、`FnOnce`——但它们有什么区别?什么时候使用哪一个?如何传递捕获外部作用域变量的闭包? 请解释如何在 Rust 中正确传递函数和闭包。最好附带代码示例。提前感谢! <<>>

在 Rust 中传递函数的主要方法