Issue
I wrote this snippet:
let my_option: Option<()> = None;
if my_option.is_some() {
my_option.unwrap();
}
Clippy is telling me to use:
if let Some(..) = my_option {
my_option.unwrap();
}
What does Some(..)
mean? Is it just dropping the value similar to how using _
would in some cases? And where can I find more information about when and where I can use the ..
?
Solution
Completing the excellent answer by @SvenMarnach, ..
does have a meaning in patterns and it's indeed very similar to _
: while _
means "ignore one field here", ..
means "ignore zero or more fields here".
As such, in almost any place you can use _
you can also use ..
, although it can lead to mistakes if fields are added later. The only exceptions are identifier patterns - you can do if let _ = 123
but not if let .. = 123
, and struct patterns because it has special syntax: ignoring one field is Struct { field: _ }
, while ignoring many is Struct { .. }
.
Answered By - Chayim Friedman Answer Checked By - Willingham (PHPFixing Volunteer)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.