如何在 Rust 的结构体中保存闭包 (closure)?
你好!我开始学习 Rust,在尝试将闭包保存到结构体时遇到了问题。我有一个简单的计算器,它应该根据传入的闭包执行不同的操作。
以下是我尝试做的:
```rust
struct Calculator {
operation: fn(i32, i32) -> i32,
}
fn main() {
let add = |a, b| a + b;
let calc = Calculator { operation: add };
println!("Result: {}", (calc.operation)(5, 3));
}
```
这段代码可以工作,但仅限于我传递普通函数或不捕获外部环境变量的闭包。一旦我尝试使用捕获变量的闭包,编译器就会报错。例如:
```rust
let multiplier = 2;
let multiply = |a, b| a * b * multiplier;
let calc = Calculator { operation: multiply }; // 错误!
```
我读过关于 `Fn`、`FnMut` 和 `FnOnce` trait 的资料,但不知道如何在结构体中正确使用它们。如何让结构体能够存储