-
-
Notifications
You must be signed in to change notification settings - Fork 140
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Have you considered adding some handy utility functions to Maybe and Result?
In using returns I'm missing many helpful methods you can find in Rust, for example.
Adding a few of these could increase the usability of the containers of returns.
Related: #1091
Here they are, in my subjective order of usefulness:
Setdefault
Set a value if one is not yet present.
The name setdefault would be consistent with the python dict method.
(Although it might be good to choose another name to make clear that
the method doesn't mutate.)
>>> Some(6).setdefault(7)
Some(6)
>>> Nothing.setdefault(3)
Some(3)Zip
Combine the values from two containers into a tuple, if both are successful.
>>> Some(8).zip(Some(2))
Some((8, 2))
>>> Some(7).zip(Nothing)
Nothing
>>> Nothing.zip(Some(3))
Nothing
>>> Nothing.zip(Nothing)
NothingFilter
Keep a value based on a predicate
>>> Some("9").filter(str.isdigit)
Some("9")
>>> Some("foo3").filter(str.isdigit)
Nothing
>>> Nothing.filter(str.isdigit)
NothingAnd
AND logic operation
>>> Some(5).and_(Some(9))
Some(9)
>>> Some(9).and_(Nothing)
Nothing
>>> Nothing.and_(Some(8))
NothingOr
OR logic operation
>>> Some(5).or_(Some(9))
Some(5)
>>> Some(9).or_(Nothing)
Some(9)
>>> Nothing.or_(Some(8))
Some(8)
>>> Nothing.or_(Nothing)
Nothingsobolevn, Pentusha, fadedDexofan, djbrown, vchernetskyi993 and 2 more
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request