options3 solution

This commit is contained in:
mo8it 2024-06-26 14:47:57 +02:00
parent a91888e79e
commit 25b5686dd2
3 changed files with 36 additions and 7 deletions

View file

@ -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 {
// 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!"),
_ => panic!("No match!"),
}
y; // Fix without deleting this line.
println!("{optional_point:?}"); // Don't change this line.
}

View file

@ -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

View file

@ -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:?}");
}