Forward more ExactSizeIterator methods and `is_empty` edits #38149

Merged
merged 6 commits into from Dec 7, 2016

Projects

None yet

5 participants

@bluss
Contributor
bluss commented Dec 3, 2016
  • Forward ExactSizeIterator methods in more places, like &mut I and Box<I> iterator impls.
  • Improve VecDeque::is_empty itself (see commit 4)
  • All the collections iterators now have len or is_empty forwarded if doing so is a benefit. In the remaining cases, they already use a simple size hint (using something like a stored usize value), which is sufficient for the default implementation of len and is_empty.
@rust-highfive
Collaborator

r? @sfackler

(rust_highfive has picked a reviewer for you, use r? to override)

@bluss
Contributor
bluss commented Dec 3, 2016 edited

Huh, I don't understand this travis error, which shows up in tidy after it already built the regular build successfully.

error: unused or unknown feature
  --> /checkout/src/liballoc/lib.rs:82:12
   |
82 | #![feature(exact_size_is_empty)]
   |            ^^^^^^^^^^^^^^^^^^^
   |
bluss added some commits Dec 3, 2016
@bluss bluss core: Forward ExactSizeIterator::is_empty for Bytes dd3e63a
@bluss bluss std: Forward ExactSizeIterator::is_empty for Args, ArgsOs iterators 7ba7622
@bluss bluss collections: Simplify VecDeque::is_empty
Improve is_empty on the VecDeque and its iterators by just comparing
tail and head; this saves a few instructions (to be able to remove the
`& (size - 1)` computation, it would have to know that size is a power of two).
343b4c3
@bluss bluss binary_heap: Forward ExactSizeIterator::is_empty 28852c3
@bluss bluss alloc: Forward ExactSizeIterator methods in Iterator for Box<I>
d53f82c
@bluss bluss iter: Forward ExactSizeIterator methods for &mut I 705e295
@bluss
Contributor
bluss commented Dec 4, 2016

I've tried to address the tidy failure by making the exact_size_is_empty feature conditional; it's unused when cfg(test).

@alexcrichton
Member

@bors: r+

Thanks!

@bors
Contributor
bors commented Dec 6, 2016

📌 Commit d53f82c has been approved by alexcrichton

@bors
Contributor
bors commented Dec 7, 2016

⌛️ Testing commit d53f82c with merge 5938eba...

@bors bors added a commit that referenced this pull request Dec 7, 2016
@bors bors Auto merge of #38149 - bluss:is-empty, r=alexcrichton
Forward more ExactSizeIterator methods and `is_empty` edits

- Forward ExactSizeIterator methods in more places, like `&mut I` and `Box<I>` iterator impls.
- Improve `VecDeque::is_empty` itself (see commit 4)
- All the collections iterators now have `len` or `is_empty` forwarded if doing so is a benefit. In the remaining cases, they already use a simple size hint (using something like a stored `usize` value), which is sufficient for the default implementation of len and is_empty.
5938eba
@bors bors merged commit d53f82c into rust-lang:master Dec 7, 2016

2 checks passed

continuous-integration/travis-ci/pr The Travis CI build passed
Details
homu Test successful
Details
@bluss bluss deleted the bluss:is-empty branch Dec 7, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment