我是一個鐵鏽新手,試圖通過玩弄它的語言。我已經打在試圖從一個函數返回一個數組的一些問題:如何從函數返回擁有的數組?
struct Widget {
thingies: ~[int]
}
impl Widget {
fn new() -> Widget {
Widget { thingies: ~[4, 8, 15, 16, 23, 42] }
}
fn somethings(&self) -> ~[int] {
self.thingies
}
}
fn main() {
let widget = Widget::new();
let wotsits = widget.somethings();
}
這當然無法編譯與此錯誤:
pointers.rs:11:8: 11:21 error: cannot move out of dereference of & pointer
pointers.rs:11 self.thingies
在這種情況下,代碼示例看起來不爽,所有我試圖做的是從實現的結構中拉出一個數組。借來的指針並不重要,這只是我試圖存儲數據的方式。
有關如何正確提取我的數組的任何提示?
順便說一句,我使用的防鏽0.8
'〜'是一個獨特的指針,只能有其中之一(爲相同的值)。它們不能像原始C指針那樣被複制(別名)。試圖創建另一個值(返回值)將該值從原始指針移出,這會使'thingies'和整個'self'不確定,這當然是不允許的。你可能打算返回一個借來的指針,而不是去掉'self.thingies'。 – hamstergene
〜[T]被稱爲*矢量*,而不是*數組*。人們通常在兩者之間進行區分的區別在於,陣列是靜態大小的,而矢量可以增長或縮小。 –