相关疑难解决方法(0)

调用`drop`后移动的变量仍在借用?

fn main() {
    let mut x: Vec<&i32> = vec![];
    let a = 1;
    x.push(&a);
    drop(x);
    // x.len(); // error[E0382]: use of moved value: `x`
}  // `a` dropped here while still borrowed
Run Code Online (Sandbox Code Playgroud)

编译器知道drop()丢弃x(从注释掉的代码中的错误可以看出),但仍然认为变量是借用的a!这不公平!

这应该被认为是众多生锈/锈病#6393之一(现在由rust-lang/rfcs#811跟踪?)但是那里的讨论似乎集中在一个块中制作&mut self&self共存.

lifetime rust

5
推荐指数
2
解决办法
861
查看次数

标签 统计

lifetime ×1

rust ×1