我之前搜索过这个问题,比如this和this,但是按照第一个链接的解决方案并尝试将它们应用到我的代码中,rustc 似乎误解了我想要做的事情。
我想创建一个链表并为节点中间分配一些引用并打印它们的值。首先,我使它们可变,以便创建从 head ref 到 tail ref 的列表,然后我想将它们转换为不可变的,从 tail ref 到 head ref,这不会违反所有权规则。最后,我想访问一些不可变的引用(中点)来获取它们的值。
我的代码:(游乐场)
struct Node<T> {
val: T,
next: Option<Box<Node<T>>>,
}
impl<T> Node<T> {
fn new(val: T) -> Option<Box<Node<T>>> {
Some(Box::new(Node { val, next: None }))
}
}
fn main() {
let head = &mut Node::new(0);
let a = &mut head.as_mut().unwrap().next;
*a = Node::new(10);
let b = &mut a.as_mut().unwrap().next;
*b = Node::new(20);
let c = &mut b.as_mut().unwrap().next;
*c = Node::new(30);
let tail …Run Code Online (Sandbox Code Playgroud) 我学习 C++ 一段时间了,对它的容器用法感到困惑。如果我想使用某个容器,我必须手动将它们一一包含在内。例如,如果我想使用“向量”容器,我必须输入#include "vector",如果我稍后需要“列表”容器,我必须添加#include "list"。
为什么 C++ 标准不简单地将每个容器类放在一个头文件中(例如 )#include "container",这样开发人员就不用关心将它们一一包含了?