我拥有一个3号数组的所有权,我想迭代它,随着我的去向移动元素.基本上,我想IntoIterator实现一个固定大小的数组.
由于数组没有在标准库中实现这个特性(我理解为什么),是否有解决方法来获得所需的效果?我的对象不是Copy也不是Clone.我可以Vec从数组中创建一个然后迭代进入Vec,但我甚至不确定如何做到这一点.
(有关信息,我想完成一系列的Complete)
这是一个简单的情况示例(天真的iter()尝试):
// No-copy, No-clone struct
#[derive(Debug)]
struct Foo;
// A method that needs an owned Foo
fn bar(foo: Foo) {
println!("{:?}", foo);
}
fn main() {
let v: [Foo; 3] = [Foo, Foo, Foo];
for a in v.iter() {
bar(*a);
}
}
Run Code Online (Sandbox Code Playgroud)
给
error[E0507]: cannot move out of borrowed content
--> src/main.rs:14:13
|
14 | bar(*a);
| ^^ cannot move out of …Run Code Online (Sandbox Code Playgroud)