我有一个盒装数组的结构,我想使用这个数组并将其插入到一个向量中.
我目前的方法是将数组转换为向量,但相应的库函数似乎不像我预期的那样工作.
let foo = Box::new([1, 2, 3, 4]);
let bar = foo.into_vec();
Run Code Online (Sandbox Code Playgroud)
编译器错误状态
没有为当前范围中的
into_vec类型命名的方法Box<[_; 4]>
我发现这里的规格看起来像
fn into_vec(self: Box<[T]>) -> Vec<T>
Converts self into a vector without clones or allocation.
Run Code Online (Sandbox Code Playgroud)
......但我不太确定如何应用它.有什么建议?
我认为有更清洁的方法.初始化时foo,请为其添加类型.操场
fn main() {
let foo: Box<[u32]> = Box::new([1, 2, 3, 4]);
let bar = foo.into_vec();
println!("{:?}", bar);
}
Run Code Online (Sandbox Code Playgroud)
您链接到的文档是针对切片的,即,[T]您拥有的是长度为4的数组:[T; 4].
但是,您可以简单地转换它们,因为长度为4的数组是一个切片.这有效:
let foo = Box::new([1, 2, 3, 4]);
let bar = (foo as Box<[_]>).into_vec();
Run Code Online (Sandbox Code Playgroud)