diff --git a/src/libcore/core.rc b/src/libcore/core.rc index b422d76e02d..f8658b8e46e 100644 --- a/src/libcore/core.rc +++ b/src/libcore/core.rc @@ -191,7 +191,7 @@ pub use tuple::{CopyableTuple, ImmutableTuple, ExtendedTupleOps}; pub use str::{StrSlice, Trimmable}; pub use vec::{ConstVector, CopyableVector, ImmutableVector}; pub use vec::{ImmutableEqVector, ImmutableCopyableVector}; -pub use vec::{MutableVector, MutableCopyableVector}; +pub use vec::{OwnedVector, OwnedCopyableVector}; pub use iter::{BaseIter, ExtendedIter, EqIter, CopyableIter}; pub use iter::{CopyableOrderedIter, CopyableNonstrictIter, Times}; diff --git a/src/libcore/prelude.rs b/src/libcore/prelude.rs index 3d5139a2d32..f2f6659278d 100644 --- a/src/libcore/prelude.rs +++ b/src/libcore/prelude.rs @@ -21,7 +21,7 @@ pub use tuple::{CopyableTuple, ImmutableTuple, ExtendedTupleOps}; pub use str::{StrSlice, Trimmable}; pub use vec::{ConstVector, CopyableVector, ImmutableVector}; pub use vec::{ImmutableEqVector, ImmutableCopyableVector}; -pub use vec::{MutableVector, MutableCopyableVector}; +pub use vec::{OwnedVector, OwnedCopyableVector}; pub use iter::{BaseIter, ExtendedIter, EqIter, CopyableIter}; pub use iter::{CopyableOrderedIter, CopyableNonstrictIter, Times}; diff --git a/src/libcore/vec.rs b/src/libcore/vec.rs index 8cfbad4ec6b..ae72e425d20 100644 --- a/src/libcore/vec.rs +++ b/src/libcore/vec.rs @@ -1599,13 +1599,6 @@ pub trait ImmutableVector<T> { pure fn filter_map<U: Copy>(f: fn(t: &T) -> Option<U>) -> ~[U]; } -pub trait ImmutableEqVector<T: Eq> { - pure fn position(f: fn(t: &T) -> bool) -> Option<uint>; - pure fn position_elem(t: &T) -> Option<uint>; - pure fn rposition(f: fn(t: &T) -> bool) -> Option<uint>; - pure fn rposition_elem(t: &T) -> Option<uint>; -} - /// Extension methods for vectors impl<T> &[T]: ImmutableVector<T> { /// Return a slice that points into another slice. @@ -1671,6 +1664,13 @@ impl<T> &[T]: ImmutableVector<T> { } } +pub trait ImmutableEqVector<T: Eq> { + pure fn position(f: fn(t: &T) -> bool) -> Option<uint>; + pure fn position_elem(t: &T) -> Option<uint>; + pure fn rposition(f: fn(t: &T) -> bool) -> Option<uint>; + pure fn rposition_elem(t: &T) -> Option<uint>; +} + impl<T: Eq> &[T]: ImmutableEqVector<T> { /** * Find the first index matching some predicate @@ -1740,7 +1740,7 @@ impl<T: Copy> &[T]: ImmutableCopyableVector<T> { pure fn rfind(f: fn(t: &T) -> bool) -> Option<T> { rfind(self, f) } } -pub trait MutableVector<T> { +pub trait OwnedVector<T> { fn push(&mut self, t: T); fn push_all_move(&mut self, rhs: ~[T]); fn pop(&mut self) -> T; @@ -1753,18 +1753,7 @@ pub trait MutableVector<T> { fn retain(&mut self, f: pure fn(t: &T) -> bool); } -pub trait MutableCopyableVector<T: Copy> { - fn push_all(&mut self, rhs: &[const T]); - fn grow(&mut self, n: uint, initval: &T); - fn grow_fn(&mut self, n: uint, op: iter::InitOp<T>); - fn grow_set(&mut self, index: uint, initval: &T, val: T); -} - -trait MutableEqVector<T: Eq> { - fn dedup(&mut self); -} - -impl<T> ~[T]: MutableVector<T> { +impl<T> ~[T]: OwnedVector<T> { #[inline] fn push(&mut self, t: T) { push(self, t); @@ -1817,7 +1806,14 @@ impl<T> ~[T]: MutableVector<T> { } -impl<T: Copy> ~[T]: MutableCopyableVector<T> { +pub trait OwnedCopyableVector<T: Copy> { + fn push_all(&mut self, rhs: &[const T]); + fn grow(&mut self, n: uint, initval: &T); + fn grow_fn(&mut self, n: uint, op: iter::InitOp<T>); + fn grow_set(&mut self, index: uint, initval: &T, val: T); +} + +impl<T: Copy> ~[T]: OwnedCopyableVector<T> { #[inline] fn push_all(&mut self, rhs: &[const T]) { push_all(self, rhs); @@ -1839,14 +1835,17 @@ impl<T: Copy> ~[T]: MutableCopyableVector<T> { } } -impl<T: Eq> ~[T]: MutableEqVector<T> { +trait OwnedEqVector<T: Eq> { + fn dedup(&mut self); +} + +impl<T: Eq> ~[T]: OwnedEqVector<T> { #[inline] fn dedup(&mut self) { dedup(self) } } - /** * Constructs a vector from an unsafe pointer to a buffer *