我试图迭代地导航递归数据结构,以便在某个位置插入元素.根据我的有限理解,这意味着对结构的根进行可变引用,并通过对其跟随者的引用连续替换它:
type Link = Option<Box<Node>>;
struct Node {
next: Link
}
struct Recursive {
root: Link
}
impl Recursive {
fn back(&mut self) -> &mut Link {
let mut anchor = &mut self.root;
while let Some(ref mut node) = *anchor {
anchor = &mut node.next;
}
anchor
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这失败了:
error[E0499]: cannot borrow `anchor.0` as mutable more than once at a time
--> src/main.rs:14:24
|
14 | while let Some(ref mut node) = *anchor {
| ^^^^^^^^^^^^
| | …Run Code Online (Sandbox Code Playgroud) 我找到了使用 (1..4)
fn main() {
for v in (1..4) {
println!("{}", v);
}
}
Run Code Online (Sandbox Code Playgroud)
和 {1..4}
fn main() {
for v in {1..4} {
println!("{}", v);
}
}
Run Code Online (Sandbox Code Playgroud)
获得相同的结果." (1..4)"和" {1..4}"迭代之间是否有任何不同的语义?