# Implement a fast(er) skip for RandomAccessIterator

**URL:** <https://internals.rust-lang.org/t/implement-a-fast-er-skip-for-randomaccessiterator/1498>\
**Category:** libs\
**Created:** [January 31, 2015, 11:14am UTC](https://internals.rust-lang.org/t/implement-a-fast-er-skip-for-randomaccessiterator/1498 "2015-01-31T11:14:18Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![joris](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/joris/32/3816_2.png) [@joris](https://internals.rust-lang.org/u/joris)\
**Post date:** [January 31, 2015, 11:14am UTC](https://internals.rust-lang.org/t/implement-a-fast-er-skip-for-randomaccessiterator/1498/1 "2015-01-31T11:14:18Z")

</div>

Currently, the RandomAccessIterator provides method to borrow an element at a random Index. But if one want to restart an iterator at a random index, one must use skip(), which is basically O(n), even if the underlying type provides random access.

Either an “seek()” method for mutable RAM iterator, either a iter\_at() for Clonable or iter\_at\_by\_ref() could be useful.

---

<div class="post-metadata">

**Author:** ![Gankra](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/gankra/32/6002_2.png) [@Gankra](https://internals.rust-lang.org/u/Gankra)\
**Post date:** [February 1, 2015, 3:19pm UTC](https://internals.rust-lang.org/t/implement-a-fast-er-skip-for-randomaccessiterator/1498/2 "2015-02-01T15:19:57Z")

</div>

I believe the longterm plan is to wait for better specialization support so that `skip` can be implemented effeciently on all RandomAccessIterators uniformly.

---

<div class="post-metadata">

**Author:** ![bluss](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/bluss/32/2264_2.png) [@bluss](https://internals.rust-lang.org/u/bluss)\
**Post date:** [February 1, 2015, 6:08pm UTC](https://internals.rust-lang.org/t/implement-a-fast-er-skip-for-randomaccessiterator/1498/3 "2015-02-01T18:08:29Z")

</div>

I almost hope RAI isn’t marked stable. It seems like an interface that never materialized – we need to find a better way to do this.

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/system/32/14092_2.png) [@system](https://internals.rust-lang.org/u/system)\
**Post date:** [March 25, 2019, 8:23am UTC](https://internals.rust-lang.org/t/implement-a-fast-er-skip-for-randomaccessiterator/1498/4 "2019-03-25T08:23:47Z")

</div>

Closed on March 25, 2019, 8:23am UTC

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.
