Rust 可变字符串引用是否实现复制

Rust 可变字符串引用是否实现复制,rust,Rust,在下面的代码中,我希望编译器抱怨在hello函数的第二次调用中使用了moved value:xref。编译器不会引发任何此类错误。我错过了什么 fn main() { let mut x: String = "Developer".to_string(); let x_ref: &mut String = &mut x; hello(x_ref); hello(x_ref); } fn hello(a: &mut St

在下面的代码中,我希望编译器抱怨
hello
函数的第二次调用中使用了moved value:xref
。编译器不会引发任何此类错误。我错过了什么

fn main() {
    let mut x: String = "Developer".to_string();
    let x_ref: &mut String = &mut x;
    hello(x_ref);
    hello(x_ref);
}

fn hello(a: &mut String) {
    println!("Hello {}", a);
}

您的示例在每个引用之后使用可变引用,这允许编译器执行。它基本上将此代码转换为:

hello(&mut*x_ref);
您好(&mut*x_ref);
现在,您有两个单独的可变借用,每个借用仅用于函数调用的生命周期,因此它们不会相互冲突

如果同时尝试使用两次,则会看到错误

fn main(){
让mut x:String=“Developer.”to_String();
设x_ref:&mut String=&mut x;
你好(x_ref,x_ref);
}
fn hello(a:&mut字符串,b:&mut字符串){
println!(“你好{}和{}”,a,b);
}
关于您的问题-由于现有问题的标题非常不同,他们在提问之前无法自己找到这些问题-是的,这正是重复问题的原因。通过将你的问题标记为重复,如果人们使用你的措辞,他们会找到正确的答案。删除你的问题,你就消除了这种可能性。复制品不是坏事。