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

这段Rust代码是否违反了唯一可变引用原则?

Rust中match表达式内的可变引用作用域分析
fn main() {
    let mut v = String::from("hello,");
    let r = &mut v;

    println!("{}", r); // hello,

    match *r {
        ref mut value => {
            value.push_str(" world"); 
            // r也可以在这里使用,这是代码块和函数的不同之处
        },
    }

    println!("{}", r); // hello, world (并非通过r直接修改)
}

这段代码里,可变引用value处于另一个可变引用r的作用域当中。表面上看match表达式好像暂时把r“屏蔽”了,但从r的视角来说,在它还处于有效使用状态时,确实有另一个可变引用在修改它指向的底层值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 04:56:09