Updated std::Option, std::Either and std::Result#8268
Closed
Kimundi wants to merge 1 commit intorust-lang:masterfrom
Closed
Updated std::Option, std::Either and std::Result#8268Kimundi wants to merge 1 commit intorust-lang:masterfrom
Kimundi wants to merge 1 commit intorust-lang:masterfrom
Conversation
Made naming schemes consistent between Option, Result and Either Changed Options Add implementation to work like the maybe monad (return None if any of the inputs is None) Renamed Option::unwrap to Option::get and Option::take_unwrap to Option::take_get
Contributor
|
Not sure I agree with the renaming of unwrap -- I prefer |
Contributor
|
The naming RFC #7887 seems to suggest that |
Contributor
|
I killed this build. Sorry. There have been some concerns raised here and on IRC, from reading the referenced bug it's not clear that a consensus was reached, and this is a very significant design decision. |
Contributor
Author
|
With #8288 merged, this can be closed now. |
bors
added a commit
that referenced
this pull request
Aug 7, 2013
According to #7887, we've decided to use the syntax of `fn map<U>(f: &fn(&T) -> U) -> U`, which passes a reference to the closure, and to `fn map_move<U>(f: &fn(T) -> U) -> U` which moves the value into the closure. This PR adds these `.map_move()` functions to `Option` and `Result`. In addition, it has these other minor features: * Replaces a couple uses of `option.get()`, `result.get()`, and `result.get_err()` with `option.unwrap()`, `result.unwrap()`, and `result.unwrap_err()`. (See #8268 and #8288 for a more thorough adaptation of this functionality. * Removes `option.take_map()` and `option.take_map_default()`. These two functions can be easily written as `.take().map_move(...)`. * Adds a better error message to `result.unwrap()` and `result.unwrap_err()`.
flip1995
pushed a commit
to flip1995/rust
that referenced
this pull request
Jan 13, 2022
Fix `deref_addrof` fixes rust-lang#8247 This would supersede rust-lang#8259 changelog: Don't lint `deref_addrof` when the dereference and the borrow occur in different contexts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I also touched up on two issues that haven't yet reached a real consensus, so it wouldn't wonder me if this PR doesn't go through uncontested:
See Overloaded
Addon Option has arguably the wrong behavior #6002, especially my last comment.See also RFC: Boxes vs Containers - Naming schemes for element access #7887, In my opinion, at least for these enums,
getas unwrap operation, andget_refas take-reference operation seem to make most sense.Todo:
Adding testcases for all function in the three modules. Even without the few functions I added, the coverage wasn't complete to begin with. But I'd rather do that as a follow up PR, I've touched to much code here already, need to go through them again with a clear mind.