Yes it is. Typically you’d do some pattern matching to handle every possible case, but Unwrap is often used as a shortcut.
brandon
- 0 Posts
- 7 Comments
It’s more like a method that can throw an exception. Rust doesn’t really have exceptions, but if you have a Result<T> or Option<T> type you can Unwrap it to get just the T. But if there’s no T to get (in the case of an Error type for Result for None for Option) the call panics.
brandon@piefed.socialto
Linux@lemmy.ml•I just found out my fiancee wants to switch to linux, lets start a distro war, what should be her first? + other questionsEnglish
55·4 months agoWell no, the Canonical distribution is Ubuntu.
/s
For wayland applications you can try
waypipetoo, which I’ve found works for most things.
brandon@piefed.socialto
Technology@lemmy.world•Techcrunch reports that AI coding tools have "very negative" gross margins. In other words, they are losing money on every user.English
5·6 months agoThat’s not capitalism, that’s a market.
brandon@piefed.socialto
Technology@beehaw.org•IRS Makes Direct File Software Open Source After Trump Tried to Kill ItEnglish
9·8 months agoThey are referring to some fringe “tax protester” conspiracy theories which dispute that the 16th amendment was properly ratified. You can read about them here: https://en.wikipedia.org/wiki/Tax_protester_Sixteenth_Amendment_arguments#Sixteenth_Amendment_ratification
Suffice it to say, these ‘theories’ have been largely rejected, including by the states themselves, and by the SCOTUS.

Not really, because rust doesn’t have exceptions. Instead you are encouraged to handle every possible case with pattern matching. For example:
fn maybe_add_one(number: Option<u8>) -> u8 { match number { None => 0, Some(i) => i + 1, } }Option<u8> is a type which can either be some 8bit unsigned integer, or none. It’s conceptually similar to a
Nullable<int>in C#.In C# you could correctly implement this like:
public int MaybeAddOne(int? number) { if (number.HasValue) { return number.Value + 1; } return 0; }In rust, you can call Unwrap on an option to get the underlying value, but it will panic if the value is None (because None isn’t a u8):
fn maybe_add_one(number: Option<u8>) -> u8 { number.unwrap() + 1 }In some cases unwrap could be useful if you don’t care about a panic or if you know the value can’t be
None. Sometimes it’s just used as a shortcut. You can likewise do this in C#:public int MaybeAddOne(int? number) { return number.Value + 1; }But this throws an exception if number is null.
A panic isn’t the same as an exception though, you can’t ‘catch’ a panic, it’s unrecoverable and the program will terminate more-or-less immediately.
Rust provides a generic type
Result<T, E>, T being a successful result and E being some error type, which you are encouraged to use along with pattern matching to make sure all cases are handled.