找出 Fn 约束里的 bug

来自 闭包
Rust 1.98 进阶 4分钟 找出 1处问题

找出这个辅助函数为何拒绝会递增捕获状态的回调。

Rust
fn call_twice<F>(callback: F) -> (u32, u32)
where
    F: Fn() -> u32,
{
    (callback(), callback())
}

fn main() {
    let mut sequence = 0;
    let next = || {
        sequence += 1;
        sequence
    };
    println!("{:?}", call_twice(next));
}
在试验场中打开
报告错误