about summary refs log tree commit diff
path: root/src/libterm
diff options
context:
space:
mode:
authorSteven Fackler <sfackler@gmail.com>2014-04-11 20:59:18 -0700
committerSteven Fackler <sfackler@gmail.com>2014-04-13 23:47:53 -0700
commiteb0473df93b49d6a2ff50f82e435dbd2e19467c7 (patch)
treea34483e0c817fd840d7dd5e38401a5dc7883fbb6 /src/libterm
parentbb9b2e0ebe63b6853a7936aa8071859e433c6597 (diff)
downloadrust-eb0473df93b49d6a2ff50f82e435dbd2e19467c7.tar.gz
rust-eb0473df93b49d6a2ff50f82e435dbd2e19467c7.zip
Make Result::{unwrap, unwrap_err} require Show
`foo.ok().unwrap()` and `foo.err().unwrap()` are the fallbacks for types
that aren't `Show`.

Closes #13379
Diffstat (limited to 'src/libterm')
-rw-r--r--src/libterm/lib.rs25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/libterm/lib.rs b/src/libterm/lib.rs
index a94a13aa017..84ba122631e 100644
--- a/src/libterm/lib.rs
+++ b/src/libterm/lib.rs
@@ -132,21 +132,22 @@ impl<T: Writer> Terminal<T> {
             None => return Err(~"TERM environment variable undefined")
         };
 
-        let entry = open(term);
-        if entry.is_err() {
-            if "cygwin" == term { // msys terminal
-                return Ok(Terminal {out: out, ti: msys_terminfo(), num_colors: 8});
+        let mut file = match open(term) {
+            Ok(file) => file,
+            Err(err) => {
+                if "cygwin" == term { // msys terminal
+                    return Ok(Terminal {
+                        out: out,
+                        ti: msys_terminfo(),
+                        num_colors: 8
+                    });
+                }
+                return Err(err);
             }
-            return Err(entry.unwrap_err());
-        }
+        };
 
-        let mut file = entry.unwrap();
-        let ti = parse(&mut file, false);
-        if ti.is_err() {
-            return Err(ti.unwrap_err());
-        }
+        let inf = try!(parse(&mut file, false));
 
-        let inf = ti.unwrap();
         let nc = if inf.strings.find_equiv(&("setaf")).is_some()
                  && inf.strings.find_equiv(&("setab")).is_some() {
                      inf.numbers.find_equiv(&("colors")).map_or(0, |&n| n)