Referans için, Rust 0.7 kullanıyorum.Sahip olunan bir işaretçi nasıl taşınır
Bağlı bir bağlantı listesi kullanarak yığın uygulaması oluşturmaya çalışıyorum ve sorun yaşıyorum. Ben rustc stack.rs
çalıştığınızda
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
}
}
aşağıdaki hatayı alıyorum:
stack.rs:13:28: 13:34 error: cannot move out of dereference of & pointer
stack.rs:13 *self = ~Link(item, *self);
^~~~~~
Ben bu baş edebilen ya da ne ben farklı yapabileceği buna izin nasıl bilmiyorum. Yönetilen işaretçileri kullanmadan bu veri yapısını oluşturabilmem gerektiği gibi görünüyor, ancak bu tür şeylerle ilgili pek çok belge görmedim. .
BenLink(item, *self)
implies a move olduğu gibi, bunun dışında yeni bir şey inşa içerir düşünüyorum öz (dan
'(Kesme'yi kendini) kuyruk = std :: util :: yerini izin Kabul cevap gibi' Zinciri 'üzerindeki özellik uygulamak gerekir, ancak böyle bir şey kullanarak fikir muhafaza edebilir; std :: util :: replace (kendiliğinden, Link (item, ~ tail)); 'replace 've' swap' işlevleri, sahip olunan veri yapılarıyla çalışırken önemli araçlardır. –
u0b34a0f6ae