I came across a place where I'd really like to collapse:
for maybe_item in option_vec {
if let Some(item) = maybe_item {
// etc
}
}
to:
for Some(item) in option_vec {
// etc
}
It's a minor thing. But so is if let
, and that improves ergonomics.
Let us bikeshed.
filter_map
to the rescue!
for really_item in option_vec.iter().filter_map(|x| x) {
// etc
}
It will ignore anything that returns a None
value, effectively including the if let
for you.
6 Likes
The problem is that it's unclear if you want it to skip None
s, or stop on the first None
.
So the adapter is probably the right choice. (And you can do .flatten()
if you want.)
1 Like
Itertools::while_some()
is nice for that, or you can write:
while let Some(Some(item)) = iter.next() {
// ...
}
1 Like
system
Closed
5
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.