@@ -1479,7 +1479,7 @@ pub fn reverse_part<T>(v: &mut [T], start: uint, end : uint) {
1479
1479
let mut i = start;
1480
1480
let mut j = end - 1 ;
1481
1481
while i < j {
1482
- v [ i ] <-> v [ j ] ;
1482
+ vec :: swap ( v , i , j ) ;
1483
1483
i += 1 ;
1484
1484
j -= 1 ;
1485
1485
}
@@ -1790,7 +1790,6 @@ pub fn each2_mut<U, T>(v1: &mut [U], v2: &mut [T], f: &fn(u: &mut U, t: &mut T)
1790
1790
*
1791
1791
* * `fun` - The function to iterate over the combinations
1792
1792
*/
1793
- #[ cfg( not( stage0) ) ]
1794
1793
pub fn each_permutation < T : Copy > ( values : & [ T ] , fun : & fn ( perm : & [ T ] ) -> bool ) {
1795
1794
let length = values. len ( ) ;
1796
1795
let mut permutation = vec:: from_fn ( length, |i| values[ i] ) ;
@@ -1816,16 +1815,13 @@ pub fn each_permutation<T:Copy>(values: &[T], fun: &fn(perm : &[T]) -> bool) {
1816
1815
}
1817
1816
// swap indices[k] and indices[l]; sort indices[k+1..]
1818
1817
// (they're just reversed)
1819
- indices[ k] <-> indices[ l] ;
1820
- unsafe {
1821
- reverse_part ( indices, k+1 , length) ;
1822
- }
1818
+ vec:: swap ( indices, k, l) ;
1819
+ reverse_part ( indices, k+1 , length) ;
1823
1820
// fixup permutation based on indices
1824
1821
for uint:: range( k, length) |i| {
1825
1822
permutation[ i] = values[ indices[ i] ] ;
1826
1823
}
1827
1824
}
1828
- return true ;
1829
1825
}
1830
1826
1831
1827
/**
@@ -1844,7 +1840,7 @@ pub fn each_permutation<T:Copy>(values: &[T], fun: &fn(perm : &[T]) -> bool) {
1844
1840
* * `fun` - The function to iterate over the permutations
1845
1841
*/
1846
1842
#[ cfg( not( stage0) ) ]
1847
- pub fn each_permutation_ref < T > ( values : & ' v [ T ] , fun : & fn ( perm : & [ & ' v T ] ) -> bool ) {
1843
+ pub fn each_permutation_ref < T > ( values : & [ T ] , fun : & fn ( perm : & [ & T ] ) -> bool ) {
1848
1844
each_permutation ( vec:: from_fn ( values. len ( ) , |i| & values[ i] ) , fun) ;
1849
1845
}
1850
1846
@@ -4814,95 +4810,91 @@ mod tests {
4814
4810
}
4815
4811
}
4816
4812
4817
- fn dup < T : Copy > ( values : & [ & T ] ) -> ~[ T ] {
4818
- from_fn ( values. len ( ) , |i| * values[ i] )
4819
- }
4820
-
4821
4813
#[ test]
4822
4814
fn test_reverse_part ( ) {
4823
4815
let mut values = [ 1 , 2 , 3 , 4 , 5 ] ;
4824
4816
reverse_part ( values, 1 , 4 ) ;
4825
- assert values == [ 1 , 4 , 3 , 2 , 5 ] ;
4817
+ assert_eq ! ( values, [ 1 , 4 , 3 , 2 , 5 ] ) ;
4826
4818
}
4827
4819
4828
4820
#[ test]
4829
4821
fn test_permutations0 ( ) {
4830
4822
let values = [ ] ;
4831
4823
let mut v : ~[ ~[ int ] ] = ~[ ] ;
4832
4824
for each_permutation( values) |p| {
4833
- v. push ( vec :: from_slice ( p ) ) ;
4825
+ v. push ( p . to_owned ( ) ) ;
4834
4826
}
4835
- assert v == ~[ ~[ ] ] ;
4827
+ assert_eq ! ( v , ~[ ~[ ] ] ) ;
4836
4828
}
4837
4829
4838
4830
#[ test]
4839
4831
fn test_permutations0_ref ( ) {
4840
4832
let values = [ ] ;
4841
4833
let mut v : ~[ ~[ int ] ] = ~[ ] ;
4842
4834
for each_permutation_ref( values) |p| {
4843
- v. push ( dup ( p ) ) ;
4835
+ v. push ( p . to_owned ( ) ) ;
4844
4836
}
4845
- assert v == ~[ ~[ ] ] ;
4837
+ assert_eq ! ( v , ~[ ~[ ] ] ) ;
4846
4838
}
4847
4839
4848
4840
#[ test]
4849
4841
fn test_permutations1 ( ) {
4850
4842
let values = [ 1 ] ;
4851
4843
let mut v : ~[ ~[ int ] ] = ~[ ] ;
4852
4844
for each_permutation( values) |p| {
4853
- v. push ( vec :: from_slice ( p ) ) ;
4845
+ v. push ( p . to_owned ( ) ) ;
4854
4846
}
4855
- assert v == ~[ ~[ 1 ] ] ;
4847
+ assert_eq ! ( v , ~[ ~[ 1 ] ] ) ;
4856
4848
}
4857
4849
4858
4850
#[ test]
4859
4851
fn test_permutations1_ref ( ) {
4860
4852
let values = [ 1 ] ;
4861
4853
let mut v : ~[ ~[ int ] ] = ~[ ] ;
4862
4854
for each_permutation_ref( values) |p| {
4863
- v. push ( dup ( p ) ) ;
4855
+ v. push ( p . to_owned ( ) ) ;
4864
4856
}
4865
- assert v == ~[ ~[ 1 ] ] ;
4857
+ assert_eq ! ( v , ~[ ~[ 1 ] ] ) ;
4866
4858
}
4867
4859
4868
4860
#[ test]
4869
4861
fn test_permutations2 ( ) {
4870
4862
let values = [ 1 , 2 ] ;
4871
4863
let mut v : ~[ ~[ int ] ] = ~[ ] ;
4872
4864
for each_permutation( values) |p| {
4873
- v. push ( vec :: from_slice ( p ) ) ;
4865
+ v. push ( p . to_owned ( ) ) ;
4874
4866
}
4875
- assert v == ~[ ~[ 1 , 2 ] , ~[ 2 , 1 ] ] ;
4867
+ assert_eq ! ( v , ~[ ~[ 1 , 2 ] , ~[ 2 , 1 ] ] ) ;
4876
4868
}
4877
4869
4878
4870
#[ test]
4879
4871
fn test_permutations2_ref ( ) {
4880
4872
let values = [ 1 , 2 ] ;
4881
4873
let mut v : ~[ ~[ int ] ] = ~[ ] ;
4882
4874
for each_permutation_ref( values) |p| {
4883
- v. push ( dup ( p ) ) ;
4875
+ v. push ( p . to_owned ( ) ) ;
4884
4876
}
4885
- assert v == ~[ ~[ 1 , 2 ] , ~[ 2 , 1 ] ] ;
4877
+ assert_eq ! ( v , ~[ ~[ 1 , 2 ] , ~[ 2 , 1 ] ] ) ;
4886
4878
}
4887
4879
4888
4880
#[ test]
4889
4881
fn test_permutations3 ( ) {
4890
4882
let values = [ 1 , 2 , 3 ] ;
4891
4883
let mut v : ~[ ~[ int ] ] = ~[ ] ;
4892
4884
for each_permutation( values) |p| {
4893
- v. push ( vec :: from_slice ( p ) ) ;
4885
+ v. push ( p . to_owned ( ) ) ;
4894
4886
}
4895
- assert v == ~[ ~[ 1 , 2 , 3 ] , ~[ 1 , 3 , 2 ] , ~[ 2 , 1 , 3 ] , ~[ 2 , 3 , 1 ] , ~[ 3 , 1 , 2 ] , ~[ 3 , 2 , 1 ] ] ;
4887
+ assert_eq ! ( v , ~[ ~[ 1 , 2 , 3 ] , ~[ 1 , 3 , 2 ] , ~[ 2 , 1 , 3 ] , ~[ 2 , 3 , 1 ] , ~[ 3 , 1 , 2 ] , ~[ 3 , 2 , 1 ] ] ) ;
4896
4888
}
4897
4889
4898
4890
#[ test]
4899
4891
fn test_permutations3_ref ( ) {
4900
4892
let values = [ 1 , 2 , 3 ] ;
4901
4893
let mut v : ~[ ~[ int ] ] = ~[ ] ;
4902
4894
for each_permutation_ref( values) |p| {
4903
- v. push ( dup ( p ) ) ;
4895
+ v. push ( p . to_owned ( ) ) ;
4904
4896
}
4905
- assert v == ~[ ~[ 1 , 2 , 3 ] , ~[ 1 , 3 , 2 ] , ~[ 2 , 1 , 3 ] , ~[ 2 , 3 , 1 ] , ~[ 3 , 1 , 2 ] , ~[ 3 , 2 , 1 ] ] ;
4897
+ assert_eq ! ( v , ~[ ~[ 1 , 2 , 3 ] , ~[ 1 , 3 , 2 ] , ~[ 2 , 1 , 3 ] , ~[ 2 , 3 , 1 ] , ~[ 3 , 1 , 2 ] , ~[ 3 , 2 , 1 ] ] ) ;
4906
4898
}
4907
4899
4908
4900
#[ test]
0 commit comments