fn main() {
let mut name = String::from("Charlie");
let x = &mut name;
let y = x; // x has been moved
say_hello(y);
say_hello(y); // but y has not been moved, it is still usable
change_string(y);
change_string(y);
}
fn say_hello(s: &str) {
println!("Hello {}", s);
}
fn change_string(s: &mut String) {
s.push_str(" Brown");
}
当我将x
分配给y
时,x
已经移动了。然而,我期望使用移动语义的内容在函数中使用时也会被移动。但是,在后续调用之后仍然可以使用该引用。也许这与say_hello()
接受不可变引用,而change_string()
接受可变引用有关,但该引用仍未被移动。