僅供參考,我使用的是Rust 0.7。如何移動指針
我想創建一個使用擁有鏈表的堆棧實現,我遇到了麻煩。
trait Stack<T> {
fn push(&mut self, item : T);
fn pop(&mut self) -> Option<T>;
}
enum Chain<T> {
Link(T, ~Chain<T>),
Break
}
impl<T> Stack<T> for ~Chain<T> {
fn push(&mut self, item : T) {
*self = ~Link(item, *self);
}
fn pop(&mut self) -> Option<T> {
None
}
}
當我嘗試rustc stack.rs
我得到以下錯誤:
stack.rs:13:28: 13:34 error: cannot move out of dereference of & pointer
stack.rs:13 *self = ~Link(item, *self);
^~~~~~
我不知道我是怎麼克服這個還是我能做什麼不同,讓這一點。看起來我應該能夠創建這個數據結構而不使用託管指針,但是我還沒有看到很多這方面的文檔。 。
從自我(我認爲包括建設一個新的東西出來,如在Link(item, *self)
implies a move的情況下
你應該實現對連鎖''喜歡接受的答案的特質,但你可以通過使用類似保留您的想法'讓尾部=的std :: UTIL ::代替(個體經營,斷裂); std :: util :: replace(self,Link(item,〜tail));'當使用擁有的數據結構時,'replace'和'swap'函數是重要的工具。 –
u0b34a0f6ae