- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Rust 新手。作为学习练习,我正在尝试制作一个基本的二叉树。这是我到目前为止所拥有的:
fn main() {
let data = vec![6,1,2,3,4,5];
let mut root = Node::<i32> { value: data[0], left: None, right: None };
for val in data {
createAndInsert::<i32>(&root, val);
}
println!("Root value: {}", root.value);
}
fn createAndInsert<T: PartialOrd>(mut root: &Node<T>, value: T) {
let mut n = Node::<T> { value: value, left: None, right: None };
insert::<T>(&root, &n);
}
fn insert<T: PartialOrd>(mut curr: &Node<T>, new: &Node<T>) {
if new.value > curr.value {
match curr.right {
Some(ref n) => insert(n, new),
None => curr.right = Some(Box::new(*new))
}
} else {
match curr.left {
Some(ref n) => insert(n, new),
None => curr.left = Some(Box::new(*new))
}
}
}
struct Node<T: PartialOrd> {
value: T,
left: Option<Box<Node<T>>>,
right: Option<Box<Node<T>>>,
}
我得到的编译器错误:
test.rs:21:48: 21:52 error: cannot move out of borrowed content
test.rs:21 None => curr.right = Some(Box::new(*new))
^~~~
test.rs:26:47: 26:51 error: cannot move out of borrowed content
test.rs:26 None => curr.left = Some(Box::new(*new))
^~~~
test.rs:21:21: 21:54 error: cannot assign to immutable field `curr.right`
test.rs:21 None => curr.right = Some(Box::new(*new))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
test.rs:26:21: 26:53 error: cannot assign to immutable field `curr.left`
test.rs:26 None => curr.left = Some(Box::new(*new))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
error: aborting due to 4 previous errors
我已经被所有的 refs 和 muts 以及 &'s 和 *'s 缠住了,我不知道如何出去。我哪里错了?
最佳答案
你有两个问题:
无法移出借用的上下文:参见 Cannot move out of borrowed content when borrowing a generic type寻求解释。
无法分配给不可变字段:您只有一个 &Node<T>
;修改 Node
你需要一个&mut Node<T>
. mut curr
在模式中只是使 binding 可变,这意味着您可以为 curr
分配一个新值.但是,您不能修改 curr
的内容指的是。传播 &
-到- &mut
在整个代码中进行转换,它会起作用。
关于rust - 与借阅检查员搏斗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31153517/
我对Spark Inspector感兴趣,但我不能在试用模式下使用它。我安装了最新版本。然后我使用了框架设置助手,但它没有帮助。建筑设置正确 - 我按照以下说明逐步检查:http://www.spar
我正在尝试实例化一个在敌人死亡时出现的硬币预制件。 为了最初获得对预制件的引用,我使用它的标签检索了它: private GameObject coinSpawn; Start(){ coin
情况: 每当您在 中访问此 URL 时 Safari https://nvm.samengroen.com/plan/basic/497并在控制台中查看有关 XMLHttpRequest 的错误和 a
我是一名优秀的程序员,十分优秀!