rust怎么给一个函数传一个闭包类型的参数?
时间: 2024-05-08 21:19:53 浏览: 151
(Swift)闭包作为方法参数
可以使用泛型参数和trait bounds来实现给一个函数传一个闭包类型的参数,具体实现方式如下:
```rust
fn execute_with_closure<F>(closure: F)
where
F: Fn(i32) -> i32,
{
let input = 10;
let output = closure(input);
println!("Closure returned: {}", output);
}
fn main() {
let closure = |input| input * 2;
execute_with_closure(closure);
}
```
在上面的代码中,我们使用了泛型参数 `<F>` 来声明传递闭包类型的参数,并且使用了 `Fn` trait bounds 来指定闭包类型。函数 `execute_with_closure` 接受一个类型为 `F` 的参数,该参数是一个闭包,闭包的输入参数类型是 `i32`,输出参数类型也是 `i32`。在 `main` 函数中定义了一个闭包 `closure`,它接受一个 `i32` 类型的参数并返回两倍该参数的值。最后,将闭包 `closure` 作为参数传递给函数 `execute_with_closure`,该函数执行闭包并打印返回值。
阅读全文