2015-07-02 64 views
2
struct Foo(i32); 

fn print_foo(xs: &[Foo]){ 
    for i in xs{ 
     println!("{}", i.0); 
    } 
} 

fn main() { 
    let xs = [Foo(1), Foo(2), Foo(3)]; 
    // need do something in this line to conert xs to &[Foo] 
    print_foo(xs); // error: expected &[Foo] but found [Foo; 3] 

} 

變量xs需要轉換爲&[Foo]但搜索沒有給我正確的答案。如何將靜態數組轉換爲動態數組?

回答

3

如果您參考它(&xs),您將擁有類型&[Foo; 3],它可以自由地強制動態調整大小的切片&[Foo]

0
print_foo(&xs); 

順便說一句,&[Foo]不是一個動態數組;這是一個切片。切片是數組視圖。

+1

說一個切片是一個數組視圖是一個失實的陳述;這是對任何適合的內存塊的看法。這可能是一個數組(或其中的一部分),一個向量,一個字符串(只有'&[u8]',沒有其他類型的切片),*&c。* –

+0

我認爲向量和字符串包含一個數組它不是一個固定大小的數組),所以從這個角度來看,聲明仍然是真實的。 –

+3

「數組」是Rust中一個非常具體的術語:'[T; N]'。沒有其他的。 –

相關問題