mirror of
https://github.com/rust-lang/rustlings.git
synced 2024-12-26 15:26:29 +00:00
options3 solution
This commit is contained in:
parent
a91888e79e
commit
25b5686dd2
3 changed files with 36 additions and 7 deletions
|
@ -1,14 +1,17 @@
|
||||||
|
#[derive(Debug)]
|
||||||
struct Point {
|
struct Point {
|
||||||
x: i32,
|
x: i32,
|
||||||
y: i32,
|
y: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let y: Option<Point> = Some(Point { x: 100, y: 200 });
|
let optional_point = Some(Point { x: 100, y: 200 });
|
||||||
|
|
||||||
match y {
|
// TODO: Fix the compiler error by adding something to this match statement.
|
||||||
Some(p) => println!("Co-ordinates are {},{} ", p.x, p.y),
|
match optional_point {
|
||||||
_ => panic!("no match!"),
|
Some(p) => println!("Co-ordinates are {},{}", p.x, p.y),
|
||||||
|
_ => panic!("No match!"),
|
||||||
}
|
}
|
||||||
y; // Fix without deleting this line.
|
|
||||||
|
println!("{optional_point:?}"); // Don't change this line.
|
||||||
}
|
}
|
||||||
|
|
|
@ -631,7 +631,8 @@ hint = """
|
||||||
The compiler says a partial move happened in the `match` statement. How can
|
The compiler says a partial move happened in the `match` statement. How can
|
||||||
this be avoided? The compiler shows the correction needed.
|
this be avoided? The compiler shows the correction needed.
|
||||||
|
|
||||||
After making the correction as suggested by the compiler, do read:
|
After making the correction as suggested by the compiler, read the related docs
|
||||||
|
page:
|
||||||
https://doc.rust-lang.org/std/keyword.ref.html"""
|
https://doc.rust-lang.org/std/keyword.ref.html"""
|
||||||
|
|
||||||
# ERROR HANDLING
|
# ERROR HANDLING
|
||||||
|
|
|
@ -1 +1,26 @@
|
||||||
// Solutions will be available before the stable release. Thank you for testing the beta version 🥰
|
#[derive(Debug)]
|
||||||
|
struct Point {
|
||||||
|
x: i32,
|
||||||
|
y: i32,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let optional_point = Some(Point { x: 100, y: 200 });
|
||||||
|
|
||||||
|
// Solution 1: Matching over the `Option` (not `&Option`) but without moving
|
||||||
|
// out of the `Some` variant.
|
||||||
|
match optional_point {
|
||||||
|
Some(ref p) => println!("Co-ordinates are {},{}", p.x, p.y),
|
||||||
|
// ^^^ added
|
||||||
|
_ => panic!("No match!"),
|
||||||
|
}
|
||||||
|
|
||||||
|
// Solution 2: Matching over a reference (`&Option`) by added `&` before
|
||||||
|
// `optional_point`.
|
||||||
|
match &optional_point {
|
||||||
|
Some(p) => println!("Co-ordinates are {},{}", p.x, p.y),
|
||||||
|
_ => panic!("No match!"),
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("{optional_point:?}");
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue