@@ -156,7 +156,7 @@ use result::Result::{Ok, Err};
156
156
use slice;
157
157
use slice:: AsSlice ;
158
158
use clone:: Clone ;
159
- use ops:: Deref ;
159
+ use ops:: { Deref , FnOnce } ;
160
160
161
161
// Note that this is not a lang item per se, but it has a hidden dependency on
162
162
// `Iterator`, which is one. The compiler assumes that the `next` method of
@@ -389,7 +389,7 @@ impl<T> Option<T> {
389
389
/// ```
390
390
#[ inline]
391
391
#[ unstable = "waiting for conventions" ]
392
- pub fn unwrap_or_else ( self , f : || -> T ) -> T {
392
+ pub fn unwrap_or_else < F : FnOnce ( ) -> T > ( self , f : F ) -> T {
393
393
match self {
394
394
Some ( x) => x,
395
395
None => f ( )
@@ -413,7 +413,7 @@ impl<T> Option<T> {
413
413
/// ```
414
414
#[ inline]
415
415
#[ unstable = "waiting for unboxed closures" ]
416
- pub fn map < U > ( self , f : | T | -> U ) -> Option < U > {
416
+ pub fn map < U , F : FnOnce ( T ) -> U > ( self , f : F ) -> Option < U > {
417
417
match self {
418
418
Some ( x) => Some ( f ( x) ) ,
419
419
None => None
@@ -433,7 +433,7 @@ impl<T> Option<T> {
433
433
/// ```
434
434
#[ inline]
435
435
#[ unstable = "waiting for unboxed closures" ]
436
- pub fn map_or < U > ( self , def : U , f: | T | -> U ) -> U {
436
+ pub fn map_or < U , F : FnOnce ( T ) -> U > ( self , def : U , f : F ) -> U {
437
437
match self {
438
438
Some ( t) => f ( t) ,
439
439
None => def
@@ -455,7 +455,7 @@ impl<T> Option<T> {
455
455
/// ```
456
456
#[ inline]
457
457
#[ unstable = "waiting for unboxed closures" ]
458
- pub fn map_or_else < U > ( self , def : || -> U , f : | T | -> U ) -> U {
458
+ pub fn map_or_else < U , D : FnOnce ( ) -> U , F : FnOnce ( T ) -> U > ( self , def : D , f : F ) -> U {
459
459
match self {
460
460
Some ( t) => f ( t) ,
461
461
None => def ( )
@@ -497,7 +497,7 @@ impl<T> Option<T> {
497
497
/// ```
498
498
#[ inline]
499
499
#[ experimental]
500
- pub fn ok_or_else < E > ( self , err : || -> E ) -> Result < T , E > {
500
+ pub fn ok_or_else < E , F : FnOnce ( ) -> E > ( self , err : F ) -> Result < T , E > {
501
501
match self {
502
502
Some ( v) => Ok ( v) ,
503
503
None => Err ( err ( ) ) ,
@@ -615,7 +615,7 @@ impl<T> Option<T> {
615
615
/// ```
616
616
#[ inline]
617
617
#[ unstable = "waiting for unboxed closures" ]
618
- pub fn and_then < U > ( self , f : | T | -> Option < U > ) -> Option < U > {
618
+ pub fn and_then < U , F : FnOnce ( T ) -> Option < U > > ( self , f : F ) -> Option < U > {
619
619
match self {
620
620
Some ( x) => f ( x) ,
621
621
None => None ,
@@ -667,7 +667,7 @@ impl<T> Option<T> {
667
667
/// ```
668
668
#[ inline]
669
669
#[ unstable = "waiting for unboxed closures" ]
670
- pub fn or_else ( self , f : || -> Option < T > ) -> Option < T > {
670
+ pub fn or_else < F : FnOnce ( ) -> Option < T > > ( self , f : F ) -> Option < T > {
671
671
match self {
672
672
Some ( _) => self ,
673
673
None => f ( )
0 commit comments