if let Some(element) = some_vec.first() {
println!("{}", element);
// .. more code
}
and avoid the unwrap and the empty check?Edit: Added a `let` I had forgotten.
if let Some(element) = some_vec.first() {
println!("{}", element);
// .. more code
}
and avoid the unwrap and the empty check?Edit: Added a `let` I had forgotten.
Every time you have a Boolean if condition with an unwrap, it means you are not taking advantage of the type system.
You've left behind an explicit "is this collection non-empty" and you're instead relying on a property of a non-empty collection.
The PHP version can also be written as
if (($element = reset($some_arr)) !== null) {
echo $element;
}
But that code is similarly divorced from the imaginary pseudocode equivalent> You've left behind an explicit "is this collection non-empty" and you're instead relying on a property of a non-empty collection.
More abstract for who? I think virtually all Rust programmers would easily understand the `if let` snippet, virtually all PHP programmers would understand the PHP snippet, and virtually all programmers of any language would understand that a non-empty array has a first element. I'm not at all convinced that most programmers would correctly guess that a function called `reset` is used to access the first element in an array though.