2016-01-08 26 views
4

我想這樣創建數組:如何動態設置Rust數組的長度?

let arr = [0; length]; 

其中長度是usize。但我得到這個錯誤

E0307 
The length of an array is part of its type. For this reason, this length 
must be a compile-time constant. 

是否有可能創建具有動態長度的數組?我想要一個數組,而不是Vec

+4

我不認爲這是可能的。你爲什麼不想使用Vec? – fjh

+6

也許你應該描述一個陣列滿足你認爲缺乏'Vec'的特性。 –

+0

或者可能使用'Slice',它與'Array'相似,但Slice'的大小在編譯時不需要知道。 – Akavall

回答

12

是否可以創建動態長度的數組?

編號根據定義,數組的長度爲,定義編譯時爲。一個變量(因爲它可以變化)在編譯時不知道。編譯器不知道要在堆棧上分配多少空間來爲該陣列提供存儲空間。

您將需要使用Vec

let arr = vec![0; length];