相关疑难解决方法(0)

如何在没有克隆的情况下更改对拥有的值的引用?

我正在练习我在阅读 The Book 时学到的 Rust 概念。我已经能够List通过复制Box并将 分配list给复制的框来迭代我的枚举,但直觉上,我觉得必须有一种方法可以“使其指向行中的下一个指针”。

如果我尝试在没有 的情况下执行此操作bx.clone(),例如:self.list = **bx,我会“无法从**bx可变引用后面移出”。这意味着我需要拥有它,但我无法拥有bx它,因为当我在if let.

是否可以或建议在不复制的情况下移动引用?

#[derive(Clone)]
enum List {
    Cons(u32, Box<List>),
    Nil,
}
struct ListHolder {
    list: List,
}

impl Iterator for ListHolder {
    type Item = u32;
    fn next(&mut self) -> Option<u32> {
        if let Cons(num, bx) = &mut self.list {
            let val = *num;
            self.list = *bx.clone(); // This is the key line
            Some(val) …
Run Code Online (Sandbox Code Playgroud)

rust

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

标签 统计

rust ×1