]> git.lizzy.rs Git - rust.git/commitdiff
make `MutItems` iterator sound again
authorDaniel Micay <danielmicay@gmail.com>
Tue, 4 Mar 2014 23:52:26 +0000 (18:52 -0500)
committerDaniel Micay <danielmicay@gmail.com>
Tue, 4 Mar 2014 23:53:57 +0000 (18:53 -0500)
This become `Pod` when it was switched to using marker types.

src/libstd/vec.rs

index 6a4f1871b8644ad0dbd43cf9037d2522d4f6c79f..59136c99ec986abd7a87257473138342c1c92b44 100644 (file)
@@ -2311,11 +2311,13 @@ fn mut_iter(self) -> MutItems<'a, 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> {