Avatar ·

如何在 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 的资料,但不知道如何在结构体中正确使用它们。如何让结构体能够存储