@@ -114,7 +114,7 @@ pub pure fn to_either<T: Copy, U: Copy>(res: &Result<U, T>)
114
114
* ok(parse_bytes(buf))
115
115
* }
116
116
*/
117
- pub fn chain < T , U , V > ( res : Result < T , V > , op : fn ( t : T )
117
+ pub pure fn chain < T , U , V > ( res : Result < T , V > , op : fn ( T )
118
118
-> Result < U , V > ) -> Result < U , V > {
119
119
match move res {
120
120
Ok ( move t) => op ( move t) ,
@@ -130,7 +130,7 @@ pub fn chain<T, U, V>(res: Result<T, V>, op: fn(t: T)
130
130
* immediately returned. This function can be used to pass through a
131
131
* successful result while handling an error.
132
132
*/
133
- pub fn chain_err < T , U , V > (
133
+ pub pure fn chain_err < T , U , V > (
134
134
res : Result < T , V > ,
135
135
op : fn ( t : V ) -> Result < T , U > )
136
136
-> Result < T , U > {
@@ -154,7 +154,7 @@ pub fn chain_err<T, U, V>(
154
154
* print_buf(buf)
155
155
* }
156
156
*/
157
- pub fn iter < T , E > ( res : & Result < T , E > , f : fn ( & T ) ) {
157
+ pub pure fn iter < T , E > ( res : & Result < T , E > , f : fn ( & T ) ) {
158
158
match * res {
159
159
Ok ( ref t) => f ( t) ,
160
160
Err ( _) => ( )
@@ -169,7 +169,7 @@ pub fn iter<T, E>(res: &Result<T, E>, f: fn(&T)) {
169
169
* This function can be used to pass through a successful result while
170
170
* handling an error.
171
171
*/
172
- pub fn iter_err < T , E > ( res : & Result < T , E > , f : fn ( & E ) ) {
172
+ pub pure fn iter_err < T , E > ( res : & Result < T , E > , f : fn ( & E ) ) {
173
173
match * res {
174
174
Ok ( _) => ( ) ,
175
175
Err ( ref e) => f ( e)
@@ -190,7 +190,7 @@ pub fn iter_err<T, E>(res: &Result<T, E>, f: fn(&E)) {
190
190
* parse_bytes(buf)
191
191
* }
192
192
*/
193
- pub fn map < T , E : Copy , U : Copy > ( res : & Result < T , E > , op : fn ( & T ) -> U )
193
+ pub pure fn map < T , E : Copy , U : Copy > ( res : & Result < T , E > , op : fn ( & T ) -> U )
194
194
-> Result < U , E > {
195
195
match * res {
196
196
Ok ( ref t) => Ok ( op ( t) ) ,
@@ -206,7 +206,7 @@ pub fn map<T, E: Copy, U: Copy>(res: &Result<T, E>, op: fn(&T) -> U)
206
206
* is immediately returned. This function can be used to pass through a
207
207
* successful result while handling an error.
208
208
*/
209
- pub fn map_err < T : Copy , E , F : Copy > ( res : & Result < T , E > , op : fn ( & E ) -> F )
209
+ pub pure fn map_err < T : Copy , E , F : Copy > ( res : & Result < T , E > , op : fn ( & E ) -> F )
210
210
-> Result < T , F > {
211
211
match * res {
212
212
Ok ( copy t) => Ok ( t) ,
@@ -215,58 +215,55 @@ pub fn map_err<T: Copy, E, F: Copy>(res: &Result<T, E>, op: fn(&E) -> F)
215
215
}
216
216
217
217
impl < T , E > Result < T , E > {
218
+ #[ inline( always) ]
218
219
pure fn get_ref ( & self ) -> & self /T { get_ref ( self ) }
219
220
220
- pure fn is_ok ( ) -> bool { is_ok ( & self ) }
221
+ #[ inline( always) ]
222
+ pure fn is_ok ( & self ) -> bool { is_ok ( self ) }
221
223
222
- pure fn is_err ( ) -> bool { is_err ( & self ) }
224
+ #[ inline( always) ]
225
+ pure fn is_err ( & self ) -> bool { is_err ( self ) }
223
226
224
- pure fn iter ( f : fn ( & T ) ) {
225
- match self {
226
- Ok ( ref t) => f ( t) ,
227
- Err ( _) => ( )
228
- }
227
+ #[ inline( always) ]
228
+ pure fn iter ( & self , f : fn ( & T ) ) { iter ( self , f) }
229
+
230
+ #[ inline( always) ]
231
+ pure fn iter_err ( & self , f : fn ( & E ) ) { iter_err ( self , f) }
232
+
233
+ #[ inline( always) ]
234
+ pure fn unwrap ( self ) -> T { unwrap ( self ) }
235
+
236
+ #[ inline( always) ]
237
+ pure fn unwrap_err ( self ) -> T { unwrap ( self ) }
238
+
239
+ #[ inline( always) ]
240
+ pure fn chain < U > ( self , op : fn ( T ) -> Result < U , E > ) -> Result < U , E > {
241
+ chain ( self , op)
229
242
}
230
243
231
- fn iter_err ( f : fn ( & E ) ) {
232
- match self {
233
- Ok ( _) => ( ) ,
234
- Err ( ref e) => f ( e)
235
- }
244
+ #[ inline( always) ]
245
+ pure fn chain_err < F > ( self , op : fn ( E ) -> Result < T , F > ) -> Result < T , F > {
246
+ chain_err ( self , op)
236
247
}
237
248
}
238
249
239
250
impl < T : Copy , E > Result < T , E > {
240
- pure fn get ( ) -> T { get ( & self ) }
251
+ #[ inline( always) ]
252
+ pure fn get ( & self ) -> T { get ( self ) }
241
253
242
- fn map_err < F : Copy > ( op : fn ( & E ) -> F ) -> Result < T , F > {
243
- match self {
244
- Ok ( copy t) => Ok ( t) ,
245
- Err ( ref e) => Err ( op ( e) )
246
- }
254
+ #[ inline( always) ]
255
+ pure fn map_err < F : Copy > ( & self , op : fn ( & E ) -> F ) -> Result < T , F > {
256
+ map_err ( self , op)
247
257
}
248
258
}
249
259
250
260
impl < T , E : Copy > Result < T , E > {
251
- pure fn get_err ( ) -> E { get_err ( & self ) }
252
-
253
- fn map < U : Copy > ( op : fn ( & T ) -> U ) -> Result < U , E > {
254
- match self {
255
- Ok ( ref t) => Ok ( op ( t) ) ,
256
- Err ( copy e) => Err ( e)
257
- }
258
- }
259
- }
260
-
261
- impl < T : Copy , E : Copy > Result < T , E > {
262
- fn chain < U : Copy > ( op : fn ( t : T ) -> Result < U , E > ) -> Result < U , E > {
263
- // XXX: Bad copy
264
- chain ( copy self, op)
265
- }
261
+ #[ inline( always) ]
262
+ pure fn get_err ( & self ) -> E { get_err ( self ) }
266
263
267
- fn chain_err < F : Copy > ( op : fn ( t : E ) -> Result < T , F > ) -> Result < T , F > {
268
- // XXX: Bad copy
269
- chain_err ( copy self, op)
264
+ # [ inline ( always ) ]
265
+ pure fn map < U : Copy > ( & self , op : fn ( & T ) -> U ) -> Result < U , E > {
266
+ map ( self , op)
270
267
}
271
268
}
272
269
@@ -360,15 +357,17 @@ pub fn iter_vec2<S,T,U:Copy>(ss: &[S], ts: &[T],
360
357
}
361
358
362
359
/// Unwraps a result, assuming it is an `ok(T)`
363
- pub fn unwrap < T , U > ( res : Result < T , U > ) -> T {
360
+ #[ inline( always) ]
361
+ pub pure fn unwrap < T , U > ( res : Result < T , U > ) -> T {
364
362
match move res {
365
363
Ok ( move t) => move t,
366
364
Err ( _) => fail ~"unwrap called on an err result"
367
365
}
368
366
}
369
367
370
368
/// Unwraps a result, assuming it is an `err(U)`
371
- pub fn unwrap_err < T , U > ( res : Result < T , U > ) -> U {
369
+ #[ inline( always) ]
370
+ pub pure fn unwrap_err < T , U > ( res : Result < T , U > ) -> U {
372
371
match move res {
373
372
Err ( move u) => move u,
374
373
Ok ( _) => fail ~"unwrap called on an ok result"
0 commit comments