4
我想我會通過實現一些非常簡單的結構&算法來深入Rust,我從一個鏈表開始。結果並不是那麼簡單。這是到目前爲止我的代碼:生鏽:如何實現鏈表?
enum List<T>
{
Node(T, ~List<T>),
Nil
}
impl<T> List<T>
{
fn new(vector: &[T]) -> List<T> { Nil }
fn add(&mut self, item: T)
{
let tail = self;
loop
{
match *tail
{
Node(_, ~ref next) => tail = next,
Nil => break
}
}
*tail = Node(item, ~Nil);
}
}
這不能編譯,因爲未來不能被分配給在比賽中陳述尾由於不兼容的可變性。我知道這可以很容易地使用垃圾收集指針來完成,但是這樣做會挫傷練習的教育目的:我想知道如何在沒有Gc或Rc指針的情況下執行此操作。
謝謝!是的,有一個循環,但我之間來回循環和遞歸方法之間來回,我猜在一些點我失去了它。將編輯。 – kralyk