@@ -687,26 +687,6 @@ pub fn filtered<T:Copy>(v: &[T], f: &fn(t: &T) -> bool) -> ~[T] {
687
687
result
688
688
}
689
689
690
- /**
691
- * Like `filter()`, but in place. Preserves order of `v`. Linear time.
692
- */
693
- pub fn retain < T > ( v : & mut ~[ T ] , f : & fn ( t : & T ) -> bool ) {
694
- let len = v. len ( ) ;
695
- let mut deleted: uint = 0 ;
696
-
697
- for uint:: range( 0 , len) |i| {
698
- if !f ( & v[ i] ) {
699
- deleted += 1 ;
700
- } else if deleted > 0 {
701
- swap ( * v, i - deleted, i) ;
702
- }
703
- }
704
-
705
- if deleted > 0 {
706
- v. truncate ( len - deleted) ;
707
- }
708
- }
709
-
710
690
/// Flattens a vector of vectors of T into a single vector of T.
711
691
pub fn concat < T : Copy > ( v : & [ ~[ T ] ] ) -> ~[ T ] { v. concat_vec ( ) }
712
692
@@ -1820,9 +1800,25 @@ impl<T> OwnedVector<T> for ~[T] {
1820
1800
unsafe { raw:: set_len ( self , newlen) ; }
1821
1801
}
1822
1802
1823
- #[ inline]
1803
+
1804
+ /**
1805
+ * Like `filter()`, but in place. Preserves order of `v`. Linear time.
1806
+ */
1824
1807
fn retain ( & mut self , f : & fn ( t : & T ) -> bool ) {
1825
- retain ( self , f) ;
1808
+ let len = self . len ( ) ;
1809
+ let mut deleted: uint = 0 ;
1810
+
1811
+ for uint:: range( 0 , len) |i| {
1812
+ if !f ( & self [ i] ) {
1813
+ deleted += 1 ;
1814
+ } else if deleted > 0 {
1815
+ swap ( * self , i - deleted, i) ;
1816
+ }
1817
+ }
1818
+
1819
+ if deleted > 0 {
1820
+ self . truncate ( len - deleted) ;
1821
+ }
1826
1822
}
1827
1823
1828
1824
#[ inline]
0 commit comments