mirror of
https://github.com/notohh/rustlings.git
synced 2024-12-22 19:28:10 -05: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:
parent
809ec2ce01
commit
399ab328d8
3 changed files with 54 additions and 0 deletions
14
exercises/move_semantics/move_semantics5.rs
Normal file
14
exercises/move_semantics/move_semantics5.rs
Normal 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);
|
||||
}
|
19
exercises/option/option3.rs
Normal file
19
exercises/option/option3.rs
Normal 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.
|
||||
}
|
21
info.toml
21
info.toml
|
@ -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"
|
||||
|
|
Loading…
Reference in a new issue