Recursion BST树的实现问题
我刚开始读一本关于生锈的书,所以我还没有完全理解这些问题。我需要一个解决办法,而不是关于生锈理论的讲座。导致编译器错误的行位于39和41处。第一个问题似乎是我在Recursion BST树的实现问题,recursion,rust,binary-search-tree,borrow-checker,Recursion,Rust,Binary Search Tree,Borrow Checker,我刚开始读一本关于生锈的书,所以我还没有完全理解这些问题。我需要一个解决办法,而不是关于生锈理论的讲座。导致编译器错误的行位于39和41处。第一个问题似乎是我在&mutself上使用了递归实例方法 error[E0499]:不能一次多次借用“*self”作为可变项 -->src/main.rs:38:30 | 32 |让mut node=&mut self.nodes[索引为usize]; |------------第一个可变借用发生在此处 ... 38 | node.leftindex=sel
&mutself
上使用了递归实例方法
error[E0499]:不能一次多次借用“*self”作为可变项
-->src/main.rs:38:30
|
32 |让mut node=&mut self.nodes[索引为usize];
|------------第一个可变借用发生在此处
...
38 | node.leftindex=self.insertrec(node.leftindex,num);
|^^^^----先借后用
| |
|第二个可变借用发生在这里
错误[E0502]:无法将“*self”作为不可变项借用,因为它也是作为可变项借用的
-->src/main.rs:40:30
|
32 |让mut node=&mut self.nodes[索引为usize];
|------可变借用发生在此处
...
40 | node.leftcount=self.count(node.leftindex);
|^^^^---------此处稍后使用可变借用
| |
|不可变借用发生在这里
完整代码如下:
结构树{
节点:Vec,
根:i32,
}
结构节点{
num:i32,
leftindex:i32,
rightindex:i32,
leftcount:i32,
rightcount:i32,
}
常量NULL:i32=-1;
impl-bst树{
fn新(容量:i32)->BSTREE{
返回树{
节点:Vec:::具有_容量(容量为usize),
root:NULL,
};
}
fn插入(&mut self,num:i32){
self.root=self.insertrec(self.root,num);
}
fn insertrec(&mut self,index:i32,num:i32)->i32{
如果索引==NULL{
返回自分配(num);
}
让mut node=&mut self.nodes[索引为usize];
如果num==node.num{
收益指数;
}
如果num您的问题似乎可以通过的答案来回答。如果没有,请回答您的问题以解释差异。否则,我们可以将此问题标记为已回答;作为副本进行表决