相关疑难解决方法(0)

暂时离开借来的内容

我想在可变借入中替换一个值; 将其中的一部分移动到新值中:

enum Foo<T> {
    Bar(T),
    Baz(T),
}

impl<T> Foo<T> {
    fn switch(&mut self) {
        *self = match self {
            &mut Foo::Bar(val) => Foo::Baz(val),
            &mut Foo::Baz(val) => Foo::Bar(val),
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用,并且可以理解的是,将值移出会self破坏它的完整性.但由于之后立即删除了该值,我(如果不是编译器)可以保证它的安全性.

有没有办法实现这个目标?我觉得这是一个不安全代码的工作,但我不确定这是如何工作的.

ownership rust borrow-checker

5
推荐指数
3
解决办法
1184
查看次数

标签 统计

borrow-checker ×1

ownership ×1

rust ×1