5 ms·
You can replace this with a match statement to avoid the unwrap.
by JoshMcguigan 4y ago
You can replace this with a match statement to avoid the unwrap.
- Macha 4y agoIt does introduce another layer of nesting in the code, which can be undesirable from a readability perspective at times
- johntb86 4y agoRust is getting let-else to solve that problem: https://rust-lang.github.io/rfcs/3137-let-else.html https://rust-lang.github.io/rfcs/3137-let-else.html
- kannanvijayan 4y agoNot necessarily, you can extract the inner type by using the match as an expression, e.g.: ``` let val = match res { Err(e) => { ... return ...; } Ok(v) => v, }; // Use val without unwrapping here. ``` That said, even though I'd avoid unwrap in this particular case in my code, I generally disagree with the author. Taking out unwrap and leaving in expect would simply lead to a bunch of code that goes `let val = result.expect("!");`, which is equivalently bad when held up against the criticisms the author makes of unwrap. Unwrap isn't really harmful so much as a symptom and an escape valve around the fact that our type systems really aren't powerful enough to derive all the invariants the programmer can about their code.
- deleted 4y ago[deleted]
- mrits 4y agoI'd use a 'if let' for something so short.
- Cyph0n 4y agoOf course, but I think this approach signals intent a bit more clearly: we want to get error handling out of the way and then just proceed with the happy path. It’s also a tad less verbose.