如何将盒装数组转换为Rust中的Vec

时间:2016-03-02 15:47:55

标签: rust

我有一个盒装数组的结构,我想使用这个数组并将其插入一个向量中。

我目前的方法是将数组转换为向量,但相应的库函数似乎不像我预期的那样工作。

let foo = Box::new([1, 2, 3, 4]);
let bar = foo.into_vec();

编译器错误状态

  

在当前范围

中找不到类型为into_vec的名为Box<[_; 4]>的方法

我发现规范here看起来像

fn into_vec(self: Box<[T]>) -> Vec<T>
Converts self into a vector without clones or allocation.

...但我不太确定如何应用它。有什么建议吗?

2 个答案:

答案 0 :(得分:5)

own DOM API用于切片,即[T],而您拥有的是长度为4的数组:[T; 4]

然而,您可以简单地转换它们,因为长度为4 有点的数组是一个切片。这有效:

let foo = Box::new([1, 2, 3, 4]);
let bar = (foo as Box<[_]>).into_vec();

答案 1 :(得分:5)

我认为有更清洁的方法。初始化foo时,请为其添加类型。 Playground

fn main() {
    let foo: Box<[u32]> = Box::new([1, 2, 3, 4]);
    let bar = foo.into_vec();

    println!("{:?}", bar);
}