簡體   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