Skip to content

Stabilize iterator methods in 1.27 - #49607

Merged
alexcrichton merged 3 commits into
rust-lang:masterfrom
cuviper:stable-iter-1.27
Apr 5, 2018
Merged

Stabilize iterator methods in 1.27#49607
alexcrichton merged 3 commits into
rust-lang:masterfrom
cuviper:stable-iter-1.27

Conversation

@cuviper

Copy link
Copy Markdown
Member

@emilyalbiniemilyalbini added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. relnotes Marks issues that should be documented in the release notes of the next release. labels Apr 3, 2018
@alexcrichton

Copy link
Copy Markdown
Member

@bors: r+

Excellent, thanks @cuviper!

@bors

bors commented Apr 3, 2018

Copy link
Copy Markdown
Collaborator

📌 Commit 9db63bb has been approved by alexcrichton

@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 Apr 3, 2018
kennytm added a commit to kennytm/rust that referenced this pull request Apr 4, 2018
…chton
Stabilize iterator methods in 1.27
- Closesrust-lang#39480, feature `iter_rfind`
- `DoubleEndedIterator::rfind`
- Closesrust-lang#44705, feature `iter_rfold`
- `DoubleEndedIterator::rfold`
- Closesrust-lang#45594, feature `iterator_try_fold`
- `Iterator::try_fold`
- `Iterator::try_for_each`
- `DoubleEndedIterator::try_rfold`
@kennytmkennytm mentioned this pull request Apr 4, 2018
bors added a commit that referenced this pull request Apr 4, 2018
Rollup of 25 pull requests
Successful merges:
- #49179 (Handle future deprecation annotations )
- #49512 (Add support for variant and types fields for intra links)
- #49515 (fix targetted value background)
- #49516 (Add missing anchor for union type fields)
- #49532 (Add test for rustdoc ignore test)
- #49533 (Add #[must_use] to a few standard library methods)
- #49540 (Fix miri Discriminant() for non-ADT)
- #49559 (Introduce Vec::resize_with method (see #41758))
- #49570 (avoid IdxSets containing garbage above the universe length)
- #49577 (Stabilize String::replace_range)
- #49599 (Fix typo)
- #49603 (Fix url for intra link provided method)
- #49607 (Stabilize iterator methods in 1.27)
- #49609 (run-pass/attr-stmt-expr: expand test cases)
- #49612 (Fix "since" version for getpid feature.)
- #49618 (Fix build error when compiling libcore for 16bit targets)
- #49619 (tweak core::fmt docs)
- #49637 (Stabilize parent_id())
- #49639 (Update Cargo)
- #49628 (Re-write the documentation index)
- #49594 (Add some performance guidance to std::fs and std::io docs)
- #49625 (miri: add public alloc_kind accessor)
- #49634 (Add a test for the fix to issue #43058)
- #49641 (Regression test for #46314)
- #49547 (Unignore borrowck test)
Failed merges:
@alexcrichton
alexcrichton merged commit 9db63bb into rust-lang:masterApr 5, 2018
@cuviper
cuviper deleted the stable-iter-1.27 branch April 17, 2018 18:42
borsBot added a commit to rayon-rs/rayon that referenced this pull request Jun 27, 2018
563: [WIP] Add try_fold, try_for_each, try_reduce r=nikomatsakis a=cuviper
There are six variations here, matching the existing non-try suite:
- `try_fold` and `try_fold_with`
- `try_for_each` and `try_for_each_with`
- `try_reduce` and `try_reduce_with`
All of them operate on `Try::Ok` values similar to the exiting non-try
methods, and short-circuit early to return any `Try::Error` value seen.
This `Try` is a pub-in-private clone of the unstable `std::ops::Try`,
implemented for `Option<T>` and `Result<T, E>`.
TODO and open questions:
- [ ] Needs documentation, examples, and tests.
- [x] Should we wait for `Iterator::try_fold` and `try_for_each` to
reach rust stable? They were stabilized in rust-lang/rust#49607,
but there's always a chance this could get backed out.
- **Resolved**: they're stable in 1.27
- [x] Should we wait for stable `std::ops::Try`? We could just keep
ours private for now, and change to publicly use the standard
trait later (on sufficiently new rustc).
- **Resolved**: keep our pub-in-private `Try` for now.
- [x] Should `try_fold` and `try_fold_with` continue to short-circuit
globally, or change to only a local check?
- When I first implemented `try_reduce_with`, I use a `try_fold` +
`try_reduce` combination, like `reduce_with`'s implementation, but
I didn't like the idea of having double `full: AtomicBool` flags
in use.
- If `try_fold` only errors locally, then other threads can continue
folding normally, and you can decide what to do with the error
when you further reduce/collect/etc. e.g. A following `try_reduce`
will still short-circuit globally.
- **Resolved**: changed to just a local check.
Closes#495.
Co-authored-by: Josh Stone <cuviper@gmail.com>
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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@cuviper@alexcrichton@bors@scottmcm@emilyalbini