2021-05-17 15:10:40 +03:00
|
|
|
// move_semantics5.rs
|
2023-05-29 20:39:08 +03:00
|
|
|
//
|
|
|
|
// Make me compile only by reordering the lines in `main()`, but without adding,
|
|
|
|
// changing or removing any of them.
|
|
|
|
//
|
|
|
|
// Execute `rustlings hint move_semantics5` or use the `hint` watch subcommand
|
|
|
|
// for a hint.
|
2021-05-17 15:10:40 +03:00
|
|
|
|
2023-08-27 01:46:48 +03:00
|
|
|
#[test]
|
2024-01-31 23:59:06 +03:00
|
|
|
// Adding the curly braces makes the the scope explicit.
|
|
|
|
// This is just more readable and clear to people to reading.
|
2021-05-17 15:10:40 +03:00
|
|
|
fn main() {
|
|
|
|
let mut x = 100;
|
2024-01-31 23:59:06 +03:00
|
|
|
{
|
|
|
|
let y = &mut x;
|
|
|
|
*y += 100;
|
|
|
|
}
|
|
|
|
{
|
|
|
|
let z = &mut x;
|
|
|
|
*z += 1000;
|
|
|
|
}
|
|
|
|
assert_eq!(x, 1200);
|
|
|
|
}
|
|
|
|
|
|
|
|
// fn main() {
|
|
|
|
// let mut x = 100;
|
|
|
|
|
|
|
|
// scopes x and here and then y is out of scope afterwards
|
|
|
|
//let y = &mut x;
|
|
|
|
//*y += 100;
|
|
|
|
|
|
|
|
//let z = &mut x;
|
|
|
|
//*z += 1000;
|
|
|
|
//assert_eq!(x, 1200);
|
|
|
|
//}
|