@@ -19,7 +19,7 @@ use cmp::{Eq, Ord, TotalEq, TotalOrd, Ordering, Less, Equal, Greater};
1919use clone:: Clone ;
2020use old_iter:: BaseIter ;
2121use old_iter;
22- use iterator:: { Iterator } ;
22+ use iterator:: { Iterator , IteratorUtil } ;
2323use iter:: FromIter ;
2424use kinds:: Copy ;
2525use libc;
@@ -1107,18 +1107,7 @@ pub fn rfind_between<T:Copy>(v: &[T],
11071107
11081108/// Find the first index containing a matching value
11091109pub fn position_elem < T : Eq > ( v : & [ T ] , x : & T ) -> Option < uint > {
1110- position ( v, |y| * x == * y)
1111- }
1112-
1113- /**
1114- * Find the first index matching some predicate
1115- *
1116- * Apply function `f` to each element of `v`. When function `f` returns true
1117- * then an option containing the index is returned. If `f` matches no elements
1118- * then none is returned.
1119- */
1120- pub fn position < T > ( v : & [ T ] , f : & fn ( t : & T ) -> bool ) -> Option < uint > {
1121- position_between ( v, 0 u, v. len ( ) , f)
1110+ v. iter ( ) . position_ ( |y| * x == * y)
11221111}
11231112
11241113/**
@@ -3146,18 +3135,6 @@ mod tests {
31463135 assert ! ( position_elem( v1, & 4 ) . is_none( ) ) ;
31473136 }
31483137
3149- #[ test]
3150- fn test_position ( ) {
3151- fn less_than_three ( i : & int ) -> bool { * i < 3 }
3152- fn is_eighteen ( i : & int ) -> bool { * i == 18 }
3153-
3154- assert ! ( position( [ ] , less_than_three) . is_none( ) ) ;
3155-
3156- let v1 = ~[ 5 , 4 , 3 , 2 , 1 ] ;
3157- assert_eq ! ( position( v1, less_than_three) , Some ( 3 u) ) ;
3158- assert ! ( position( v1, is_eighteen) . is_none( ) ) ;
3159- }
3160-
31613138 #[ test]
31623139 fn test_position_between ( ) {
31633140 assert ! ( position_between( [ ] , 0 u, 0 u, f) . is_none( ) ) ;
@@ -3234,8 +3211,8 @@ mod tests {
32343211 fn g ( xy : & ( int , char ) ) -> bool { let ( _x, y) = * xy; y == 'd' }
32353212 let v = ~[ ( 0 , 'a' ) , ( 1 , 'b' ) , ( 2 , 'c' ) , ( 3 , 'b' ) ] ;
32363213
3237- assert_eq ! ( position ( v, f) , Some ( 1 u ) ) ;
3238- assert ! ( position ( v, g) . is_none( ) ) ;
3214+ assert_eq ! ( rposition ( v, f) , Some ( 3 u ) ) ;
3215+ assert ! ( rposition ( v, g) . is_none( ) ) ;
32393216 }
32403217
32413218 #[ test]
@@ -3877,21 +3854,6 @@ mod tests {
38773854 } ;
38783855 }
38793856
3880- #[ test]
3881- #[ ignore( windows) ]
3882- #[ should_fail]
3883- fn test_position_fail ( ) {
3884- let v = [ ( ~0 , @0 ) , ( ~0 , @0 ) , ( ~0 , @0 ) , ( ~0 , @0 ) ] ;
3885- let mut i = 0 ;
3886- do position( v) |_elt| {
3887- if i == 2 {
3888- fail ! ( )
3889- }
3890- i += 0 ;
3891- false
3892- } ;
3893- }
3894-
38953857 #[ test]
38963858 #[ ignore( windows) ]
38973859 #[ should_fail]
0 commit comments