about summary refs log tree commit diff
diff options
context:
space:
mode:
authorHunter Praska <hunter@wiggin-labs.com>2017-06-18 13:07:09 -0500
committerNiko Matsakis <niko@alum.mit.edu>2017-09-27 17:57:07 -0400
commit28996db803b958b235f5f3e95bc1762955de8a05 (patch)
tree8c1e30cbb2aefad2f51d91c75c06cf2fbeabbce5
parent8f63e8de464155e570ed81905ff203557dd02ac9 (diff)
downloadrust-28996db803b958b235f5f3e95bc1762955de8a05.tar.gz
rust-28996db803b958b235f5f3e95bc1762955de8a05.zip
Rename option::Missing to NoneError
-rw-r--r--src/libcore/option.rs15
-rw-r--r--src/libcore/tests/option.rs6
-rw-r--r--src/libcore/tests/result.rs2
3 files changed, 13 insertions, 10 deletions
diff --git a/src/libcore/option.rs b/src/libcore/option.rs
index 0c3339590db..980ea551f08 100644
--- a/src/libcore/option.rs
+++ b/src/libcore/option.rs
@@ -1124,25 +1124,28 @@ impl<A, V: FromIterator<A>> FromIterator<Option<A>> for Option<V> {
     }
 }
 
-/// The equivalent of `Option::None` for a `Result::Err`.
+/// The error type that results from applying the try operator (`?`) to a `None` value. If you wish
+/// to allow `x?` (where `x` is an `Option<T>`) to be converted into your error type, you can
+/// implement `impl From<NoneError>` for `YourErrorType`. In that case, `x?` within a function that
+/// returns `Result<_, YourErrorType>` will translate a `None` value into an `Err` result.
 #[unstable(feature = "try_trait", issue = "42327")]
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub struct Missing;
+pub struct NoneError;
 
 #[unstable(feature = "try_trait", issue = "42327")]
 impl<T> ops::Try for Option<T> {
     type Ok = T;
-    type Error = Missing;
+    type Error = NoneError;
 
-    fn into_result(self) -> Result<T, Missing> {
-        self.ok_or(Missing)
+    fn into_result(self) -> Result<T, NoneError> {
+        self.ok_or(NoneError)
     }
 
     fn from_ok(v: T) -> Self {
         Some(v)
     }
 
-    fn from_error(_: Missing) -> Self {
+    fn from_error(_: NoneError) -> Self {
         None
     }
 }
diff --git a/src/libcore/tests/option.rs b/src/libcore/tests/option.rs
index e2907e1dd89..22109e28edd 100644
--- a/src/libcore/tests/option.rs
+++ b/src/libcore/tests/option.rs
@@ -285,15 +285,15 @@ fn test_try() {
     }
     assert_eq!(try_option_none(), None);
 
-    fn try_option_ok() -> Result<u8, Missing> {
+    fn try_option_ok() -> Result<u8, NoneError> {
         let val = Some(1)?;
         Ok(val)
     }
     assert_eq!(try_option_ok(), Ok(1));
 
-    fn try_option_err() -> Result<u8, Missing> {
+    fn try_option_err() -> Result<u8, NoneError> {
         let val = None?;
         Ok(val)
     }
-    assert_eq!(try_option_err(), Err(Missing));
+    assert_eq!(try_option_err(), Err(NoneError));
 }
diff --git a/src/libcore/tests/result.rs b/src/libcore/tests/result.rs
index 37264980dc7..ce41bde8342 100644
--- a/src/libcore/tests/result.rs
+++ b/src/libcore/tests/result.rs
@@ -214,7 +214,7 @@ fn test_try() {
     assert_eq!(try_result_some(), Some(1));
 
     fn try_result_none() -> Option<u8> {
-        let val = Err(Missing)?;
+        let val = Err(NoneError)?;
         Some(val)
     }
     assert_eq!(try_result_none(), None);