Để tham khảo, tôi đang sử dụng Rust 0.7.Cách di chuyển con trỏ thuộc sở hữu
Tôi đang cố gắng tạo triển khai ngăn xếp bằng danh sách được liên kết thuộc sở hữu và tôi đang gặp sự cố.
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
}
}
Khi tôi cố gắng rustc stack.rs
tôi nhận được lỗi sau:
stack.rs:13:28: 13:34 error: cannot move out of dereference of & pointer
stack.rs:13 *self = ~Link(item, *self);
^~~~~~
Tôi không biết làm thế nào tôi có thể khắc phục điều này hoặc những gì tôi có thể làm cách khác nhau để cho phép điều này. Có vẻ như tôi sẽ có thể tạo cấu trúc dữ liệu này mà không cần sử dụng con trỏ được quản lý, nhưng tôi chưa thấy nhiều tài liệu về loại điều này. .
bạn nên thực hiện các đặc điểm trên 'Chuỗi' như câu trả lời được chấp nhận, nhưng bạn có thể giữ lại ý tưởng của bạn bằng cách sử dụng một cái gì đó như 'hãy đuôi = std :: util :: replace (tự, Break); std :: util :: replace (self, Link (item, ~ tail)); 'Các hàm' replace' và 'swap' là các công cụ quan trọng khi làm việc với các datastructures sở hữu. –
u0b34a0f6ae