about summary refs log tree commit diff
path: root/src/libcore
diff options
context:
space:
mode:
authorUlrik Sverdrup <bluss@users.noreply.github.com>2016-04-21 21:35:39 +0200
committerUlrik Sverdrup <bluss@users.noreply.github.com>2016-06-14 15:50:49 +0200
commitf8d2fdf02b09c594534cc19a47162aed6eaa0b1c (patch)
treecb8e31995b7864ef4640c4b7591d14cd093607e3 /src/libcore
parent1af8f3e362fd1c931503703079467df027b57cdb (diff)
downloadrust-f8d2fdf02b09c594534cc19a47162aed6eaa0b1c.tar.gz
rust-f8d2fdf02b09c594534cc19a47162aed6eaa0b1c.zip
specialize zip: Introduce TrustedRandomAccess trait
Diffstat (limited to 'src/libcore')
-rw-r--r--src/libcore/iter_private.rs27
-rw-r--r--src/libcore/lib.rs1
2 files changed, 28 insertions, 0 deletions
diff --git a/src/libcore/iter_private.rs b/src/libcore/iter_private.rs
new file mode 100644
index 00000000000..effe43cc67c
--- /dev/null
+++ b/src/libcore/iter_private.rs
@@ -0,0 +1,27 @@
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+
+use iter::ExactSizeIterator;
+
+/// An iterator whose items are random accessible efficiently
+///
+/// # Safety
+///
+/// The iterator's .len() and size_hint() must be exact.
+///
+/// .get_unchecked() must return distinct mutable references for distinct
+/// indices (if applicable), and must return a valid reference if index is in
+/// 0..self.len().
+#[doc(hidden)]
+pub unsafe trait TrustedRandomAccess : ExactSizeIterator {
+    unsafe fn get_unchecked(&mut self, i: usize) -> Self::Item;
+}
+
diff --git a/src/libcore/lib.rs b/src/libcore/lib.rs
index f2a297b7630..db73f4759a5 100644
--- a/src/libcore/lib.rs
+++ b/src/libcore/lib.rs
@@ -156,4 +156,5 @@ pub mod hash;
 pub mod fmt;
 
 // note: does not need to be public
+mod iter_private;
 mod tuple;