From: Daniel Micay Date: Tue, 4 Mar 2014 23:52:26 +0000 (-0500) Subject: make `MutItems` iterator sound again X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=4d8295df6c7b6efa7ce27f2b59e30faf3028bf54;p=rust.git make `MutItems` iterator sound again This become `Pod` when it was switched to using marker types. --- 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 @@ fn mut_iter(self) -> MutItems<'a, T> { if mem::size_of::() == 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 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> {