Skip to content

Stabilize core::convert::identity #57322

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 14, 2019
Merged

Conversation

Centril
Copy link
Contributor

@Centril Centril commented Jan 4, 2019

r? @SimonSapin

fixes #53500

This is waiting for FCP to complete but in the interim it would be good to review.

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jan 4, 2019
@Centril Centril added the relnotes Marks issues that should be documented in the release notes of the next release. label Jan 4, 2019
@SimonSapin
Copy link
Contributor

r+, pending FCP completion

@@ -86,14 +84,13 @@
/// Using `identity` to keep the `Some` variants of an iterator of `Option<T>`:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like this particularly would be better as flatten with an explicit specialisation for Option, rather than filter_map.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I disagree.

First, I think that .filter_map(identity) is clearer wrt. intent (and also semantics). I can clearly tell that filtering is happening because it says so in the name. I know that .filter_map takes f: T -> Option<U> and with identity I fix T = Option<U> and thus I get back all the Somes. The .flatten() method doesn't tell me any of this, in particular you cannot tell without knowing that Option is being operated on what the semantics are. Thus the reasoning footprint is greater with .flatten().

Second, even tho .flatten() is more general than join :: Monad m => m (m a) -> m a I think the primary use of the method should be for monadic join and using it for other purposes will break some people's minds (e.g. mine).

Third, I think that we shouldn't hold up stabilization on this issue; we can resolve it in a subsequent PR or issue if you feel strongly.

@Centril Centril added the T-libs-api Relevant to the library API team, which will review and decide on the PR/issue. label Jan 10, 2019
@Centril
Copy link
Contributor Author

Centril commented Jan 14, 2019

FCP has completed, and therefore:

@bors r=SimonSapin p=1

@bors
Copy link
Collaborator

bors commented Jan 14, 2019

📌 Commit e75dab7 has been approved by SimonSapin

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 14, 2019
@bors
Copy link
Collaborator

bors commented Jan 14, 2019

⌛ Testing commit e75dab7 with merge 1a3a3df...

bors added a commit that referenced this pull request Jan 14, 2019
Stabilize core::convert::identity

r? @SimonSapin

fixes #53500

This is waiting for FCP to complete but in the interim it would be good to review.
@bors
Copy link
Collaborator

bors commented Jan 14, 2019

☀️ Test successful - checks-travis, status-appveyor
Approved by: SimonSapin
Pushing 1a3a3df to master...

@bors bors merged commit e75dab7 into rust-lang:master Jan 14, 2019
@Centril Centril deleted the stabilize-identity branch January 14, 2019 13:04
@Centril Centril added this to the 1.33 milestone Apr 26, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
relnotes Marks issues that should be documented in the release notes of the next release. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-libs-api Relevant to the library API team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Tracking issue for RFC 2306, "Add core::convert::identity"
5 participants