Please post your solutions to the Oct 6 In-Class Exercise to this thread.
Best,
Chris
Unmodified Program: <nowiki> fn main() { let s1 = String::from("hi there"); let s2 = s1.clone(); println!("s1 = {}, s2 = {}", s1, s2); } </nowiki>
Output: <nowiki> s1 = hi there, s2 = hi there </nowiki>
Modified Program: <nowiki> fn main() { let s1 = String::from("hi there"); let s2 = s1; println!("s1 = {}, s2 = {}", s1, s2); } </nowiki>
Output:
<nowiki>
error[E0382]: borrow of moved value: s1
--> main.rs:4:31
|
2 | let s1 = String::from("hi there");
| -- move occurs because s1 has type std::string::String, which does not implement the Copy trait
3 | let s2 = s1; // if had let s2 = s1; instead, next line w...
| -- 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.
exit status 1
</nowiki>
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);
}
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
For more information about this error, try rustc --explain E0382.
error: could not compile playground due to previous error
''' Last example's output:''' s1 = hi there, s2 = hi there
''' Switch 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
<nowiki> Original: 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:
fn main(){ let s1 = String::from("hi there"); s2 = s1; println!("s1 = {}, s2 = {}", s1, s2); }
Output:
error[E0425]: cannot find value s2 in this scope
--> test.rs:3:5
|
3 | s2 = s1;
| ^^ help: a local variable with a similar name exists: s1
error[E0425]: cannot find value s2 in this scope
--> test.rs:4:38
|
4 | println!("s1 = {}, s2 = {}", s1, s2);
| ^^ help: a local variable with a similar name exists: s1
error: aborting due to 2 previous errors
</nowiki>
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:
fn main() { let s1 = String::from("hi there"); let s2 = s1; println!("s1 = {}, s2 = {}", s1, s2); }
Output:
error[E0382]: borrow of moved value: s1
--> 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 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
For more information about this error, try rustc --explain E0382.
thanhle@Thanhs-MacBook-Pro hw2_thanh % rustc main.rs thanhle@Thanhs-MacBook-Pro hw2_thanh % ./main s1 = hi there s2 = hi there
thanhle@Thanhs-MacBook-Pro hw2_thanh % rustc main2.rs
error[E0382]: borrow of moved value: s1
--> main2.rs:5:31
|
2 | let s1 = String::from("Hello");
| -- move occurs because s1 has type String, which does not implement the Copy trait
3 | let s2 = s1;
| -- value moved here
4 |
5 | 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.
thanhle@Thanhs-MacBook-Pro hw2_thanh %
fn main() { 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);
}
(Edited: 2021-10-06)fn main() { let x = 20; let y = x;
let s1 = String::from("hi there");
// let s2= s1;
let s2 = s1.clone();
println!("s1 = {}, s2={}",s1,s2);
}
Output: s1 = hi there, s2=hi there
fn main() { let x = 20; let y = x;
let s1 = String::from("hi there");
let s2= s1;
// let s2 = s1.clone();
println!("s1 = {}, s2={}",s1,s2);
}
Output: error[E0382]: borrow of moved value: s1
<pre> 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.
</pre>