【发布时间】:2019-04-13 12:00:03
【问题描述】:
我正在尝试将一个闭包传递给一个函数,该函数将在函数范围内改变传递给它的某些内容。根据我目前对 Rust 的理解,应该是这样的:
pub fn call_something(callback: &FnOnce(&mut Vec<i32>)) {
let mut my_vec = vec![0, 1, 2, 3, 4];
callback(&mut my_vec);
}
这会导致这些错误:
error[E0161]: cannot move a value of type dyn for<'r> std::ops::FnOnce(&'r mut std::vec::Vec<i32>): the size of dyn for<'r> std::ops::FnOnce(&'r mut std::vec::Vec<i32>) cannot be statically determined
--> src/lib.rs:3:5
|
3 | callback(&mut my_vec);
| ^^^^^^^^
error[E0507]: cannot move out of borrowed content
--> src/lib.rs:3:5
|
3 | callback(&mut my_vec);
| ^^^^^^^^ cannot move out of borrowed content
为什么调用FnOnce 是一个举动?我在这里错过了什么?
【问题讨论】:
标签: rust closures move-semantics