about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-03-04 15:56:37 -0800
committerbors <bors@rust-lang.org>2014-03-04 15:56:37 -0800
commitfe50c75d02c9b41bcda28596077b1122a89bee5d (patch)
tree8af357b55202f77c5be8f8b9921134ceca493db3 /src/libstd
parent0a5138c75244ffc0bc639d3060566e8efc83748e (diff)
parent4d8295df6c7b6efa7ce27f2b59e30faf3028bf54 (diff)
downloadrust-fe50c75d02c9b41bcda28596077b1122a89bee5d.tar.gz
rust-fe50c75d02c9b41bcda28596077b1122a89bee5d.zip
auto merge of #12694 : thestinger/rust/mut_iter, r=huonw
This become `Pod` when it was switched to using marker types.
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/vec.rs28
1 files changed, 19 insertions, 9 deletions
diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs
index 6a4f1871b86..59136c99ec9 100644
--- a/src/libstd/vec.rs
+++ b/src/libstd/vec.rs
@@ -2311,11 +2311,13 @@ impl<'a,T> MutableVector<'a, T> for &'a mut [T] {
             if mem::size_of::<T>() == 0 {
                 MutItems{ptr: p,
                          end: (p as uint + self.len()) as *mut T,
-                         marker: marker::ContravariantLifetime::<'a>}
+                         marker: marker::ContravariantLifetime::<'a>,
+                         marker2: marker::NoPod}
             } else {
                 MutItems{ptr: p,
                          end: p.offset(self.len() as int),
-                         marker: marker::ContravariantLifetime::<'a>}
+                         marker: marker::ContravariantLifetime::<'a>,
+                         marker2: marker::NoPod}
             }
         }
     }
@@ -2682,15 +2684,23 @@ impl<A> Default for ~[A] {
     fn default() -> ~[A] { ~[] }
 }
 
+/// Immutable slice iterator
+pub struct Items<'a, T> {
+    priv ptr: *T,
+    priv end: *T,
+    priv marker: marker::ContravariantLifetime<'a>
+}
+
+/// Mutable slice iterator
+pub struct MutItems<'a, T> {
+    priv ptr: *mut T,
+    priv end: *mut T,
+    priv marker: marker::ContravariantLifetime<'a>,
+    priv marker2: marker::NoPod
+}
+
 macro_rules! iterator {
     (struct $name:ident -> $ptr:ty, $elem:ty) => {
-        /// An iterator for iterating over a vector.
-        pub struct $name<'a, T> {
-            priv ptr: $ptr,
-            priv end: $ptr,
-            priv marker: marker::ContravariantLifetime<'a>,
-        }
-
         impl<'a, T> Iterator<$elem> for $name<'a, T> {
             #[inline]
             fn next(&mut self) -> Option<$elem> {