mirror of
https://github.com/rust-lang/rustlings.git
synced 2024-12-26 00:00:03 +03: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
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
|
- 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`"""
|
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
|
# PRIMITIVE TYPES
|
||||||
|
|
||||||
[[exercises]]
|
[[exercises]]
|
||||||
|
@ -578,6 +589,16 @@ For example: Some(Some(variable)) = variable2
|
||||||
Also see Option::flatten
|
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]]
|
[[exercises]]
|
||||||
name = "result1"
|
name = "result1"
|
||||||
path = "exercises/error_handling/result1.rs"
|
path = "exercises/error_handling/result1.rs"
|
||||||
|
|
Loading…
Reference in a new issue