`kann die Dereferenzierung von` & mut`-pointer` nicht verlassen, während eine sortierte verknüpfte Liste erstellt wird

Also, ich lerne Rust und habe beschlossen, eine sortierte verknüpfte Liste zu erstellen. Alles sieht gut aus, bis ich die add-Methode erreiche, hier ist der Code:

struct NodeItem<'a, V:'a + Ord> {
  value : V,
  next : Box<Option<NodeItem<'a,V>>> // '
}

impl <'a, V:'a + Ord> NodeItem<'a,V> { // '

  fn new(value : V) -> NodeItem<'a,V> { // '
    NodeItem { value : value, next : box None }
  }

  fn add(&mut self, value : V) {

    match self.value.cmp(&value) {
      Less => {
        self.next = box Some(NodeItem {value: self.value, next : self.next });
        self.value = value;
      },
      Equal | Greater => {
        match *self.next {
          Some(ref mut next) => next.add(value),
          None => self.next = box Some(NodeItem::new(value)),
        }
      },
    }

  }

}

Der Compiler beschwert sich mit:

/home/mauricio/projects/rust/data_structures/src/lists/mod.rs:16:47: 16:51 error: cannot move out of dereference of `&mut`-pointer
/home/mauricio/projects/rust/data_structures/src/lists/mod.rs:16         self.next = box Some(NodeItem {value: self.value, next : self.next });
                                                                                                               ^~~~
/home/mauricio/projects/rust/data_structures/src/lists/mod.rs:16:66: 16:70 error: cannot move out of dereference of `&mut`-pointer
/home/mauricio/projects/rust/data_structures/src/lists/mod.rs:16         self.next = box Some(NodeItem {value: self.value, next : self.next });

Was genau ist das Problem hier? Ich verstehe, dass ich eine Referenz an einen anderen Ort verschiebe, aber sollten die Lebensdauerparameter nicht anzeigen, dass diese Elemente eine verwandte "Lebensdauer" haben?

Dies nutzt die nächtliche von 21/12 / 14.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage