小编Arc*_*Bug的帖子

如何真正正确地将可变引用转换为 Rust 中的不可变引用?

我之前搜索过这个问题,比如thisthis,但是按照第一个链接的解决方案并尝试将它们应用到我的代码中,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)

reference ownership rust borrow-checker

2
推荐指数
1
解决办法
384
查看次数

为什么C++标准将容器类拆分成多个头文件?

我学习 C++ 一段时间了,对它的容器用法感到困惑。如果我想使用某个容器,我必须手动将它们一一包含在内。例如,如果我想使用“向量”容器,我必须输入#include "vector",如果我稍后需要“列表”容器,我必须添加#include "list"

为什么 C++ 标准不简单地将每个容器类放在一个头文件中(例如 )#include "container",这样开发人员就不用关心将它们一一包含了?

c++ standards containers stl

1
推荐指数
1
解决办法
227
查看次数

标签 统计

borrow-checker ×1

c++ ×1

containers ×1

ownership ×1

reference ×1

rust ×1

standards ×1

stl ×1