]> git.lizzy.rs Git - rust.git/commitdiff
cleanup .map and .map_err
authorErick Tryzelaar <erick.tryzelaar@gmail.com>
Sat, 27 Jul 2013 02:19:33 +0000 (19:19 -0700)
committerErick Tryzelaar <erick.tryzelaar@gmail.com>
Sun, 28 Jul 2013 06:41:09 +0000 (23:41 -0700)
src/libstd/result.rs

index 54c901f3a24fe29060538f72f3e052f7e04e0bfa..8e44a42e038ab1545a7fed9b0bc93c20fc43b5b9 100644 (file)
@@ -46,45 +46,10 @@ pub fn to_either<T:Clone,U:Clone>(res: &Result<U, T>)
     }
 }
 
-/**
- * Call a function based on a previous result
- *
- * If `res` is `ok` then the value is extracted and passed to `op` whereupon
- * `op`s result is wrapped in `ok` and returned. if `res` is `err` then it is
- * immediately returned.  This function can be used to compose the results of
- * two functions.
- *
- * Example:
- *
- *     let res = map(read_file(file)) { |buf|
- *         parse_bytes(buf)
- *     }
- */
-#[inline]
-pub fn map<T, E: Clone, U: Clone>(res: &Result<T, E>, op: &fn(&T) -> U)
-  -> Result<U, E> {
-    match *res {
-      Ok(ref t) => Ok(op(t)),
-      Err(ref e) => Err((*e).clone())
-    }
-}
 
-/**
- * Call a function based on a previous result
- *
- * If `res` is `err` then the value is extracted and passed to `op` whereupon
- * `op`s result is wrapped in an `err` and returned. if `res` is `ok` then it
- * is immediately returned.  This function can be used to pass through a
- * successful result while handling an error.
- */
-#[inline]
-pub fn map_err<T:Clone,E,F:Clone>(res: &Result<T, E>, op: &fn(&E) -> F)
-  -> Result<T, F> {
-    match *res {
-      Ok(ref t) => Ok((*t).clone()),
-      Err(ref e) => Err(op(e))
-    }
-}
+
+
+
 
 impl<T, E> Result<T, E> {
     /**
@@ -229,9 +194,20 @@ pub fn get(&self) -> T {
         }
     }
 
+    /**
+    * Call a function based on a previous result
+    *
+    * If `*self` is `err` then the value is extracted and passed to `op` whereupon
+    * `op`s result is wrapped in an `err` and returned. if `*self` is `ok` then it
+    * is immediately returned.  This function can be used to pass through a
+    * successful result while handling an error.
+    */
     #[inline]
     pub fn map_err<F:Clone>(&self, op: &fn(&E) -> F) -> Result<T,F> {
-        map_err(self, op)
+        match *self {
+            Ok(ref t) => Ok(t.clone()),
+            Err(ref e) => Err(op(e))
+        }
     }
 }
 
@@ -251,9 +227,26 @@ pub fn get_err(&self) -> E {
         }
     }
 
+    /**
+    * Call a function based on a previous result
+    *
+    * If `res` is `ok` then the value is extracted and passed to `op` whereupon
+    * `op`s result is wrapped in `ok` and returned. if `res` is `err` then it is
+    * immediately returned.  This function can be used to compose the results of
+    * two functions.
+    *
+    * Example:
+    *
+    *     let res = map(read_file(file)) { |buf|
+    *         parse_bytes(buf)
+    *     }
+    */
     #[inline]
     pub fn map<U:Clone>(&self, op: &fn(&T) -> U) -> Result<U,E> {
-        map(self, op)
+        match *self {
+            Ok(ref t) => Ok(op(t)),
+            Err(ref e) => Err(e.clone())
+        }
     }
 }