作为参考,我使用的是 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);
^~~~~~
我不知道我该如何克服这一点,或者我可以做些什么来允许这一点。看起来我应该能够在不使用托管指针的情况下创建这个数据结构,但是我还没有看到很多关于这类事情的文档。