这段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
相关产品推荐
相关产品推荐

