繁体   English   中英

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

[英]How to convert a boxed array into a Vec in Rust

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

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

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

编译器错误状态

没有为Box<[_; 4]>类型找到名为into_vec方法 Box<[_; 4]>在当前范围内

我发现这里的规格看起来像

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

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

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

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

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

您链接到文档是针对切片,即[T] ,而您拥有的是长度为4的数组: [T; 4] [T; 4]

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM