【发布时间】:2021-11-26 11:13:33
【问题描述】:
https://doc.rust-lang.org/rust-by-example/fn/closures/closure_examples/iter_any.html
Rust 书中提到了 iterator::any 作为闭包的示例,并且 iterator::any 将函数作为带有 FnMut 条件的参数。根据我的理解,FnMut 不应该消耗价值,而只是可变地借用它。仅允许通过 FnOnce 使用。所以我认为下面的代码不会编译,因为 drop(x) 显然消耗了 x,但是它编译了所以我很困惑 drop(x) 是否不消耗值 x 或者函数输入参数可以通过编译器更改。
let array1 = [1, 2, 3];
array1.iter().any(|&x| {
drop(x);
return true;
})
【问题讨论】: