我想在构建时迭代调试打印单链表,但我找不到合法的借用方式。
我处理问题的方式是否过于面向对象? 我是否需要放弃安全 Rust 或使用 RefCell 来完成如此简单的事情?
fn main() {
let mut list = Some(Box::new(List { val: 0, next: None }));
let mut current = &mut list;
for i in 1..10 {
let next = Box::new(List { val: i, next: None });
current.as_mut().unwrap().next = Some(next);
current = &mut current.as_mut().unwrap().next;
// dbg!(list); Illegal!
}
}
#[derive(Debug, Clone)]
struct List {
val: i32,
next: Option<Box<List>>,
}