Опитвам се да напиша рекурсивен метод, който добавя елемент към дърво и връща възела на дървото, съответстващ на този елемент.
enum BstNode {
Node(int, ~BstNode, ~BstNode),
Leaf
}
impl BstNode {
fn insert<'a>(&'a mut self, item: int) -> &'a mut BstNode {
match *self {
Leaf => {
*self = Node(item, ~Leaf, ~Leaf);
self
},
Node(ref node_item, ref mut left, ref mut right) =>
match item.cmp(node_item) {
Less => left.insert(item),
Equal => self,
Greater => right.insert(item)
}
}
}
}
Ухапан съм от следната грешка:
bst.rs:19:30: 19:34 error: cannot move out of `self` because it is borrowed
bst.rs:19 Equal => self,
^~~~
bst.rs:16:18: 16:31 note: borrow of `self#0` occurs here
bst.rs:16 Node(ref node_item, ref mut left, ref mut right) =>
^~~~~~~~~~~~~
Какво означава „преместване от something
“? Как да поправя тази грешка?
Използвам Rust 0.10.