15
15
use cmp:: Eq ;
16
16
17
17
/// The option type
18
- enum Option < T > {
18
+ pub enum Option < T > {
19
19
None ,
20
20
Some ( T ) ,
21
21
}
22
22
23
- pure fn get < T : Copy > ( opt : & Option < T > ) -> T {
23
+ pub pure fn get < T : Copy > ( opt : & Option < T > ) -> T {
24
24
/*!
25
25
* Gets the value out of an option
26
26
*
@@ -35,7 +35,7 @@ pure fn get<T: Copy>(opt: &Option<T>) -> T {
35
35
}
36
36
}
37
37
38
- pure fn get_ref < T > ( opt : & r/Option < T > ) -> & r /T {
38
+ pub pure fn get_ref < T > ( opt : & r/Option < T > ) -> & r /T {
39
39
/*!
40
40
* Gets an immutable reference to the value inside an option.
41
41
*
@@ -49,7 +49,7 @@ pure fn get_ref<T>(opt: &r/Option<T>) -> &r/T {
49
49
}
50
50
}
51
51
52
- pure fn expect < T : Copy > ( opt : & Option < T > , +reason : ~str ) -> T {
52
+ pub pure fn expect < T : Copy > ( opt : & Option < T > , +reason : ~str ) -> T {
53
53
/*!
54
54
* Gets the value out of an option, printing a specified message on
55
55
* failure
@@ -61,21 +61,23 @@ pure fn expect<T: Copy>(opt: &Option<T>, +reason: ~str) -> T {
61
61
match * opt { Some ( copy x) => x, None => fail reason }
62
62
}
63
63
64
- pure fn map < T , U > ( opt : & Option < T > , f : fn ( x : & T ) -> U ) -> Option < U > {
64
+ pub pure fn map < T , U > ( opt : & Option < T > , f : fn ( x : & T ) -> U ) -> Option < U > {
65
65
//! Maps a `some` value by reference from one type to another
66
66
67
67
match * opt { Some ( ref x) => Some ( f ( x) ) , None => None }
68
68
}
69
69
70
- pure fn map_consume < T , U > ( +opt : Option < T > , f : fn ( +v : T ) -> U ) -> Option < U > {
70
+ pub pure fn map_consume < T , U > ( +opt : Option < T > ,
71
+ f : fn ( +v : T ) -> U ) -> Option < U > {
71
72
/*!
72
73
* As `map`, but consumes the option and gives `f` ownership to avoid
73
74
* copying.
74
75
*/
75
76
if opt. is_some ( ) { Some ( f ( option:: unwrap ( move opt) ) ) } else { None }
76
77
}
77
78
78
- pure fn chain < T , U > ( +opt : Option < T > , f : fn ( +t : T ) -> Option < U > ) -> Option < U > {
79
+ pub pure fn chain < T , U > ( +opt : Option < T > ,
80
+ f : fn ( +t : T ) -> Option < U > ) -> Option < U > {
79
81
/*!
80
82
* Update an optional value by optionally running its content through a
81
83
* function that returns an option.
@@ -89,8 +91,8 @@ pure fn chain<T, U>(+opt: Option<T>, f: fn(+t: T) -> Option<U>) -> Option<U> {
89
91
}
90
92
}
91
93
92
- pure fn chain_ref < T , U > ( opt : & Option < T > ,
93
- f : fn ( x : & T ) -> Option < U > ) -> Option < U > {
94
+ pub pure fn chain_ref < T , U > ( opt : & Option < T > ,
95
+ f : fn ( x : & T ) -> Option < U > ) -> Option < U > {
94
96
/*!
95
97
* Update an optional value by optionally running its content by reference
96
98
* through a function that returns an option.
@@ -99,7 +101,7 @@ pure fn chain_ref<T, U>(opt: &Option<T>,
99
101
match * opt { Some ( ref x) => f ( x) , None => None }
100
102
}
101
103
102
- pure fn or < T > ( +opta : Option < T > , +optb : Option < T > ) -> Option < T > {
104
+ pub pure fn or < T > ( +opta : Option < T > , +optb : Option < T > ) -> Option < T > {
103
105
/*!
104
106
* Returns the leftmost some() value, or none if both are none.
105
107
*/
@@ -110,7 +112,7 @@ pure fn or<T>(+opta: Option<T>, +optb: Option<T>) -> Option<T> {
110
112
}
111
113
112
114
#[ inline( always) ]
113
- pure fn while_some < T > ( +x : Option < T > , blk : fn ( +v : T ) -> Option < T > ) {
115
+ pub pure fn while_some < T > ( +x : Option < T > , blk : fn ( +v : T ) -> Option < T > ) {
114
116
//! Applies a function zero or more times until the result is none.
115
117
116
118
let mut opt <- x;
@@ -119,40 +121,40 @@ pure fn while_some<T>(+x: Option<T>, blk: fn(+v: T) -> Option<T>) {
119
121
}
120
122
}
121
123
122
- pure fn is_none < T > ( opt : & Option < T > ) -> bool {
124
+ pub pure fn is_none < T > ( opt : & Option < T > ) -> bool {
123
125
//! Returns true if the option equals `none`
124
126
125
127
match * opt { None => true , Some ( _) => false }
126
128
}
127
129
128
- pure fn is_some < T > ( opt : & Option < T > ) -> bool {
130
+ pub pure fn is_some < T > ( opt : & Option < T > ) -> bool {
129
131
//! Returns true if the option contains some value
130
132
131
133
!is_none ( opt)
132
134
}
133
135
134
- pure fn get_default < T : Copy > ( opt : & Option < T > , +def : T ) -> T {
136
+ pub pure fn get_default < T : Copy > ( opt : & Option < T > , +def : T ) -> T {
135
137
//! Returns the contained value or a default
136
138
137
139
match * opt { Some ( copy x) => x, None => def }
138
140
}
139
141
140
- pure fn map_default < T , U > ( opt : & Option < T > , +def : U ,
142
+ pub pure fn map_default < T , U > ( opt : & Option < T > , +def : U ,
141
143
f : fn ( x : & T ) -> U ) -> U {
142
144
//! Applies a function to the contained value or returns a default
143
145
144
146
match * opt { None => move def, Some ( ref t) => f ( t) }
145
147
}
146
148
147
- pure fn iter < T > ( opt : & Option < T > , f : fn ( x : & T ) ) {
149
+ pub pure fn iter < T > ( opt : & Option < T > , f : fn ( x : & T ) ) {
148
150
//! Performs an operation on the contained value by reference
149
151
match * opt { None => ( ) , Some ( ref t) => f ( t) }
150
152
}
151
153
152
154
// tjc: shouldn't this be - instead of +?
153
155
// then could get rid of some superfluous moves
154
156
#[ inline( always) ]
155
- pure fn unwrap < T > ( +opt : Option < T > ) -> T {
157
+ pub pure fn unwrap < T > ( +opt : Option < T > ) -> T {
156
158
/*!
157
159
* Moves a value out of an option type and returns it.
158
160
*
@@ -167,12 +169,12 @@ pure fn unwrap<T>(+opt: Option<T>) -> T {
167
169
168
170
/// The ubiquitous option dance.
169
171
#[ inline( always) ]
170
- fn swap_unwrap < T > ( opt : & mut Option < T > ) -> T {
172
+ pub fn swap_unwrap < T > ( opt : & mut Option < T > ) -> T {
171
173
if opt. is_none ( ) { fail ~"option:: swap_unwrap none" }
172
174
unwrap ( util:: replace ( opt, None ) )
173
175
}
174
176
175
- pure fn unwrap_expect < T > ( +opt : Option < T > , reason : & str ) -> T {
177
+ pub pure fn unwrap_expect < T > ( +opt : Option < T > , reason : & str ) -> T {
176
178
//! As unwrap, but with a specified failure message.
177
179
if opt. is_none ( ) { fail reason. to_unique ( ) ; }
178
180
unwrap ( move opt)
0 commit comments