@@ -8,13 +8,13 @@ use cmp::Eq;
8
8
use result:: Result ;
9
9
10
10
/// The either type
11
- enum Either < T , U > {
11
+ pub enum Either < T , U > {
12
12
Left ( T ) ,
13
13
Right ( U )
14
14
}
15
15
16
- fn either < T , U , V > ( f_left : fn ( ( & T ) ) -> V ,
17
- f_right : fn ( ( & U ) ) -> V , value : & Either < T , U > ) -> V {
16
+ pub fn either < T , U , V > ( f_left : fn ( ( & T ) ) -> V ,
17
+ f_right : fn ( ( & U ) ) -> V , value : & Either < T , U > ) -> V {
18
18
/*!
19
19
* Applies a function based on the given either value
20
20
*
@@ -29,7 +29,7 @@ fn either<T, U, V>(f_left: fn((&T)) -> V,
29
29
}
30
30
}
31
31
32
- fn lefts < T : Copy , U > ( eithers : & [ Either < T , U > ] ) -> ~[ T ] {
32
+ pub fn lefts < T : Copy , U > ( eithers : & [ Either < T , U > ] ) -> ~[ T ] {
33
33
//! Extracts from a vector of either all the left values
34
34
35
35
do vec:: build_sized ( eithers. len ( ) ) |push| {
@@ -42,7 +42,7 @@ fn lefts<T: Copy, U>(eithers: &[Either<T, U>]) -> ~[T] {
42
42
}
43
43
}
44
44
45
- fn rights < T , U : Copy > ( eithers : & [ Either < T , U > ] ) -> ~[ U ] {
45
+ pub fn rights < T , U : Copy > ( eithers : & [ Either < T , U > ] ) -> ~[ U ] {
46
46
//! Extracts from a vector of either all the right values
47
47
48
48
do vec:: build_sized ( eithers. len ( ) ) |push| {
@@ -56,7 +56,7 @@ fn rights<T, U: Copy>(eithers: &[Either<T, U>]) -> ~[U] {
56
56
}
57
57
58
58
// XXX bad copies. take arg by val
59
- fn partition < T : Copy , U : Copy > ( eithers : & [ Either < T , U > ] )
59
+ pub fn partition < T : Copy , U : Copy > ( eithers : & [ Either < T , U > ] )
60
60
-> { lefts : ~[ T ] , rights : ~[ U ] } {
61
61
/*!
62
62
* Extracts from a vector of either all the left values and right values
@@ -77,7 +77,7 @@ fn partition<T: Copy, U: Copy>(eithers: &[Either<T, U>])
77
77
}
78
78
79
79
// XXX bad copies
80
- pure fn flip < T : Copy , U : Copy > ( eith : & Either < T , U > ) -> Either < U , T > {
80
+ pub pure fn flip < T : Copy , U : Copy > ( eith : & Either < T , U > ) -> Either < U , T > {
81
81
//! Flips between left and right of a given either
82
82
83
83
match * eith {
@@ -87,7 +87,8 @@ pure fn flip<T: Copy, U: Copy>(eith: &Either<T, U>) -> Either<U, T> {
87
87
}
88
88
89
89
// XXX bad copies
90
- pure fn to_result < T : Copy , U : Copy > ( eith : & Either < T , U > ) -> Result < U , T > {
90
+ pub pure fn to_result < T : Copy , U : Copy > ( eith : & Either < T , U > )
91
+ -> Result < U , T > {
91
92
/*!
92
93
* Converts either::t to a result::t
93
94
*
@@ -101,27 +102,27 @@ pure fn to_result<T: Copy, U: Copy>(eith: &Either<T, U>) -> Result<U, T> {
101
102
}
102
103
}
103
104
104
- pure fn is_left < T , U > ( eith : & Either < T , U > ) -> bool {
105
+ pub pure fn is_left < T , U > ( eith : & Either < T , U > ) -> bool {
105
106
//! Checks whether the given value is a left
106
107
107
108
match * eith { Left ( _) => true , _ => false }
108
109
}
109
110
110
- pure fn is_right < T , U > ( eith : & Either < T , U > ) -> bool {
111
+ pub pure fn is_right < T , U > ( eith : & Either < T , U > ) -> bool {
111
112
//! Checks whether the given value is a right
112
113
113
114
match * eith { Right ( _) => true , _ => false }
114
115
}
115
116
116
- pure fn unwrap_left < T , U > ( +eith : Either < T , U > ) -> T {
117
+ pub pure fn unwrap_left < T , U > ( +eith : Either < T , U > ) -> T {
117
118
//! Retrieves the value in the left branch. Fails if the either is Right.
118
119
119
120
match move eith {
120
121
Left ( move x) => move x, Right ( _) => fail ~"either:: unwrap_left Right "
121
122
}
122
123
}
123
124
124
- pure fn unwrap_right < T , U > ( +eith : Either < T , U > ) -> U {
125
+ pub pure fn unwrap_right < T , U > ( +eith : Either < T , U > ) -> U {
125
126
//! Retrieves the value in the right branch. Fails if the either is Left.
126
127
127
128
match move eith {
0 commit comments