let s1 = String::from("hi there");
let s2 = s1.clone(); // if had let s2 = s1; instead, next line would not work
println!("s1 = {}, s2 = {}", s1, s2);
}
fn main(){
let s1 = String::from("hi there");
let s2 = s1; // if had let s2 = s1; instead, next line would not work
println!("s1 = {}, s2 = {}", s1, s2);
}
fn main() {
let s1 = String::from("hi there");
let s2 = s1.clone(); // if had let s2 = s1; instead, next line would not work
println!("s1 = {}, s2 = {}", s1, s2);
}
output:
s1 = hi there, s2 = hi there
fn main() {
let s1 = String::from("hi there");
let s2 = s1; // if had let s2 = s1; instead, next line would not work
println!("s1 = {}, s2 = {}", s1, s2);
}
output:
error[E0382]: borrow of moved value: `s1`
--> src/main.rs:4:30
|
2 | let s1 = String::from("hi there");
| -- move occurs because `s1` has type `String`, which does not implement the
`Copy` trait
3 | let s2 = s1; // if had let s2 = s1; instead, next line would not work
| -- value moved here
4 | println!("s1 = {}, s2 = {}", s1, s2);
| ^^ value borrowed here after move
s1 = hi there, s2 = hi thereSwitch s2=s1.clone() and s2=s1 output:
Compiling playground v0.0.1 (/playground)
error[E0382]: borrow of moved value: `s1`
--> src/main.rs:5:34
|
3 | let s1 = String::from("hi there");
| -- move occurs because `s1` has type `String`, which does not implement the `Copy` trait
4 | let s2=s1; // if had let s2 = s1; instead, next line would not work
| -- value moved here
5 | println!("s1 = {}, s2 = {}", s1, s2);
| ^^ value borrowed here after move
For more information about this error, try `rustc --explain E0382`.
error: could not compile `playground` due to previous error
let s1 = String::from("hi there");
let s2 = s1.clone(); // if had let s2 = s1; instead, next line would not work
println!("s1 = {}, s2 = {}", s1, s2);
}
let s1 = String::from("hi there");
let s2 = s1;
println!("s1 = {}, s2 = {}", s1, s2);
}
--> src/main.rs:4:34 |2 | let s1 = String::from("hi there");
| -- move occurs because `s1` has type `String`, which does not implement the `Copy` trait3 | let s2 = s1; // if had let s2 = s1; instead, next line would not work
| -- value moved here4 | println!("s1 = {}, s2 = {}", s1, s2);
| ^^ value borrowed here after move
s2 = hi there
--> main2.rs:5:31 |2 | let s1 = String::from("Hello");
| -- move occurs because `s1` has type `String`, which does not implement the `Copy` trait3 | let s2 = s1;
| -- value moved here4 | 5 | println!("s1 = {}, s2 = {}", s1, s2);
| ^^ value borrowed here after move
let s1 = String::from("hi there\n");
let s2 = s1.clone(); // if had let s2 = s1; instead, next line would not work
println!("s1 = {} s2 = {}", s1, s2);
}
fn main() {
let s1 = String::from("Hello");
let s2 = s1;
println!("s1 = {}, s2 = {}", s1, s2);
}
let x = 20;
let y = x;
let s1 = String::from("hi there");
// let s2= s1;
let s2 = s1.clone();
println!("s1 = {}, s2={}",s1,s2);
}
let x = 20;
let y = x;
let s1 = String::from("hi there");
let s2= s1;
// let s2 = s1.clone();
println!("s1 = {}, s2={}",s1,s2);
}
Code:
fn main(){
let s1 = String::from("hi there");
let s2 = s1.clone(); // if had let s2 = s1; instead, next line would not work
println!("s1 = {}, s2 = {}", s1, s2);
}
Output:s1 = hi there, s2 = hi there
Modified code
error[E0382]: borrow of moved value: `s1`
--> inclass.rs:4:31
|
2 | let s1 = String::from("hi there");
| -- move occurs because `s1` has type `String`, which does not implem
ent the `Copy` trait
3 | let s2 = s1; // if had let s2 = s1; instead, next line would not work
| -- value moved here
4 | println!("s1 = {}, s2 = {}", s1, s2);
| ^^ value borrowed here after move
error: aborting due to previous error
For more information about this error, try `rustc --explain E0382`.
(Edited: 2021-10-06)