Skip to content

Stabilize core::convert::identity - #57322

Merged
bors merged 1 commit into
rust-lang:masterfrom
Centril:stabilize-identity
Jan 14, 2019
Merged

Stabilize core::convert::identity#57322
bors merged 1 commit into
rust-lang:masterfrom
Centril:stabilize-identity

Conversation

@Centril

Copy link
Copy Markdown
Contributor

r? @SimonSapin

fixes#53500

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

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

Copy link
Copy Markdown
Contributor

r+, pending FCP completion

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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.

@CentrilCentril added the T-libs-api [DEPRECATED; DO NOT USE] label Jan 10, 2019
@Centril

Copy link
Copy Markdown
ContributorAuthor

FCP has completed, and therefore:

@bors r=SimonSapin p=1

@bors

bors commented Jan 14, 2019

Copy link
Copy Markdown
Collaborator

📌 Commit e75dab7 has been approved by SimonSapin

@borsbors 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
@CentrilCentril mentioned this pull request Jan 14, 2019
@bors

bors commented Jan 14, 2019

Copy link
Copy Markdown
Collaborator

⌛ Testing commit e75dab7 with merge 1a3a3df...

bors added a commit that referenced this pull request Jan 14, 2019
Stabilize core::convert::identity
r? @SimonSapinfixes#53500
This is waiting for FCP to complete but in the interim it would be good to review.
@bors

bors commented Jan 14, 2019

Copy link
Copy Markdown
Collaborator

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

@bors
bors merged commit e75dab7 into rust-lang:masterJan 14, 2019
@Centril
Centril deleted the stabilize-identity branch January 14, 2019 13:04
@CentrilCentril added this to the 1.33 milestone Apr 26, 2019
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

relnotesMarks issues that should be documented in the release notes of the next release.S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-libs-api[DEPRECATED; DO NOT USE]

Projects

None yet

Development

Successfully merging this pull request may close these issues.

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

5 participants

@Centril@SimonSapin@bors@clarfonthey@rust-highfive