MST

星途 面试题库

面试题:Rust中FnMut trait闭包在复杂场景下的运用

假设有一个结构体`Calculator`,它有一个内部状态`value: i32`。实现一个方法`operate`,该方法接受一个FnMut闭包,这个闭包会基于`Calculator`的`value`进行计算并更新`value`。同时,编写测试用例来验证该功能的正确性。
44.0万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
struct Calculator {
    value: i32,
}

impl Calculator {
    fn operate(&mut self, mut f: impl FnMut(i32) -> i32) {
        self.value = f(self.value);
    }
}

#[cfg(test)]
mod tests {
    use super::Calculator;

    #[test]
    fn test_operate() {
        let mut calculator = Calculator { value: 5 };
        calculator.operate(|x| x + 3);
        assert_eq!(calculator.value, 8);

        calculator.operate(|x| x * 2);
        assert_eq!(calculator.value, 16);
    }
}