1
0
Fork 0
mirror of https://github.com/rust-lang/rustlings.git synced 2024-05-23 16:56:12 +02:00

feat: Add move_semantics5 exercise. (#746)

* feat: Add move_semantics5 exercise.

* feat: Add option3 exercise

* Address review comments. Fix typos, sentence formatting.

* Remove unwanted newline.

* Address review comments: make comment inline, fix format in print.
This commit is contained in:
Sateesh 2021-05-17 17:40:40 +05:30 committed by GitHub
parent 809ec2ce01
commit 399ab328d8
Signed by: GitHub
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,14 @@
// move_semantics5.rs
// Make me compile without adding any newlines or removing any of the lines.
// Execute `rustlings hint move_semantics5` for hints :)
// I AM NOT DONE
fn main() {
let mut x = 100;
let y = &mut x;
let z = &mut *y;
*y += 100;
*z += 1000;
assert_eq!(x, 1200);
}

View File

@ -0,0 +1,19 @@
// option3.rs
// Make me compile! Execute `rustlings hint option3` for hints
// I AM NOT DONE
struct Point {
x: i32,
y: i32,
}
fn main() {
let y: Option<Point> = Some(Point { x: 100, y: 200 });
match y {
Some(p) => println!("Co-ordinates are {},{} ", p.x, p.y),
_ => println!("no match"),
}
y; // Fix without deleting this line.
}

View File

@ -210,6 +210,17 @@ So the end goal is to:
- since we're not creating a new vec in `main` anymore, we need to create
a new vec in `fill_vec`, similarly to the way we did in `main`"""
[[exercises]]
name = "move_semantics5"
path = "exercises/move_semantics/move_semantics5.rs"
mode = "compile"
hint = """
Carefully reason about the range in which each mutable reference is in
vogue. Does updating the value of referrent (x) immediately after the
mutable reference is taken helps? Read more about 'Mutable Referenes'
in the book's section References and Borrowing':
https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html#mutable-references."""
# PRIMITIVE TYPES
[[exercises]]
@ -578,6 +589,16 @@ For example: Some(Some(variable)) = variable2
Also see Option::flatten
"""
[[exercises]]
name = "option3"
path = "exercises/option/option3.rs"
mode = "compile"
hint = """
The compiler says a partial move happened in the `match`
statement. How can this be avoided? The compiler shows the correction
needed. After making the correction as suggested by the compiler, do
read: https://doc.rust-lang.org/std/keyword.ref.html"""
[[exercises]]
name = "result1"
path = "exercises/error_handling/result1.rs"