相关疑难解决方法(0)

如何从数组中移出值?

我拥有一个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)

arrays move rust

10
推荐指数
3
解决办法
1962
查看次数

标签 统计

arrays ×1

move ×1

rust ×1