summary refs log tree commit diff
path: root/src/libcoretest
diff options
context:
space:
mode:
authorCody P Schafer <dev@codyps.com>2015-02-25 13:37:22 -0500
committerCody P Schafer <dev@codyps.com>2015-02-25 17:38:28 -0500
commit07dc8d67c92017f950eef3951ec901cb2a3add7e (patch)
tree1ddc060d09dc610bd642ffef510fc95da28d5574 /src/libcoretest
parent880fb89bde126aa43fc348d0b93839d3d18a1f51 (diff)
downloadrust-07dc8d67c92017f950eef3951ec901cb2a3add7e.tar.gz
rust-07dc8d67c92017f950eef3951ec901cb2a3add7e.zip
Result::or : avoid over-specializing the type
Changes .or() so that it can return a Result with a different E type
than the one it is called on.

Essentially:

    fn or(self, res: Result<T, E>) -> Result<T, E>

becomes

    fn or<F>(self, res: Result<T, F>) -> Result<T, F>

This brings `or` in line with the existing `and` and `or_else` member
types.

This is a
[breaking-change]
Due to some code needing additional type annotations.
Diffstat (limited to 'src/libcoretest')
-rw-r--r--src/libcoretest/result.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libcoretest/result.rs b/src/libcoretest/result.rs
index ab7b5101e72..10cc3ad6424 100644
--- a/src/libcoretest/result.rs
+++ b/src/libcoretest/result.rs
@@ -36,10 +36,10 @@ pub fn test_and_then() {
 
 #[test]
 pub fn test_or() {
-    assert_eq!(op1().or(Ok(667)).unwrap(), 666);
+    assert_eq!(op1().or(Ok::<_, &'static str>(667)).unwrap(), 666);
     assert_eq!(op1().or(Err("bad")).unwrap(), 666);
 
-    assert_eq!(op2().or(Ok(667)).unwrap(), 667);
+    assert_eq!(op2().or(Ok::<_, &'static str>(667)).unwrap(), 667);
     assert_eq!(op2().or(Err("bad")).unwrap_err(), "bad");
 }