mirror of
https://github.com/rust-lang/rustlings
synced 2024-11-10 14:44:25 +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 {
|
||||
x: i32,
|
||||
y: i32,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let y: Option<Point> = Some(Point { x: 100, y: 200 });
|
||||
let optional_point = Some(Point { x: 100, y: 200 });
|
||||
|
||||
match y {
|
||||
Some(p) => println!("Co-ordinates are {},{} ", p.x, p.y),
|
||||
_ => panic!("no match!"),
|
||||
// TODO: Fix the compiler error by adding something to this match statement.
|
||||
match optional_point {
|
||||
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
|
||||
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"""
|
||||
|
||||
# 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