make MutItems
iterator sound again
This become `Pod` when it was switched to using marker types.
This commit is contained in:
parent
6e7f170fed
commit
4d8295df6c
1 changed files with 19 additions and 9 deletions
|
@ -2311,11 +2311,13 @@ impl<'a,T> MutableVector<'a, T> for &'a mut [T] {
|
||||||
if mem::size_of::<T>() == 0 {
|
if mem::size_of::<T>() == 0 {
|
||||||
MutItems{ptr: p,
|
MutItems{ptr: p,
|
||||||
end: (p as uint + self.len()) as *mut T,
|
end: (p as uint + self.len()) as *mut T,
|
||||||
marker: marker::ContravariantLifetime::<'a>}
|
marker: marker::ContravariantLifetime::<'a>,
|
||||||
|
marker2: marker::NoPod}
|
||||||
} else {
|
} else {
|
||||||
MutItems{ptr: p,
|
MutItems{ptr: p,
|
||||||
end: p.offset(self.len() as int),
|
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] { ~[] }
|
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 {
|
macro_rules! iterator {
|
||||||
(struct $name:ident -> $ptr:ty, $elem:ty) => {
|
(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> {
|
impl<'a, T> Iterator<$elem> for $name<'a, T> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn next(&mut self) -> Option<$elem> {
|
fn next(&mut self) -> Option<$elem> {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue