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 { 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.
} }

View file

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

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