You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust中可变引用是否意味着所有权丢失?Aquascope显示疑问解析

Rust可变引用与Aquascope所有权显示的困惑

问题代码

我修正后的Rustlings move_semantics4.rs 练习代码如下:

fn move_semantics4() {
    let mut x = Vec::new();
    let y = &mut x;
    y.push(42);
    let z = &mut x;
    z.push(13);
    assert_eq!(x, [42, 13]);
}

我的疑问

用Aquascope工具分析这段代码时,借用检查器显示第3行和第5行中x丢失了所有权。但我清楚Rust的可变引用规则:

  • 同一时间只能存在一个x的可变引用,无法创建其他引用
  • y和z可以依次对向量执行读写操作
    这完全不涉及所有权转移,我自己做的内存可视化图也明确显示所有权仍属于x。另外我还补充了包含move操作和可变引用的代码片段,其中move操作会有特殊的粗箭头标记,能明显区分开move和可变引用的不同。

希望有人能详细解释Aquascope为何会这样显示。

内容的提问来源于stack exchange,提问作者overflaw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 12:49:53