I have
fn main() {
let x = String::from("12");
fun1(&x);
}
fn fun1(in_fun: &String) {
let mut y = _______;
y.push_str("z");
println!("in fun {}", y);
}
where _____
is the code for declaring y
based on the argument in_fun
.
At first I tried let mut y = *in_fun;
which errors move occurs because '*in_fun' has type 'String', which does not implement the 'Copy' trait
and also let mut y = String::from(*in_fun);
which gives same error.
The thing that worked was let mut y = String::from(format!("{}", *in_fun));
.
- Is this the right way to declare a mutable
String
from&String
? - Also I still don't understand why dereferencing
&String
with*
errors? I understood*&
dereferencing to returns just the value of the reference.