[librsvg] Refactor some more to avoid Ok() all over the place



commit 4b90afa0c8909f1e27166b3c4a120ff1d989cd8d
Author: Federico Mena Quintero <federico gnome org>
Date:   Mon Jul 31 13:05:47 2017 -0500

    Refactor some more to avoid Ok() all over the place

 rust/src/parsers.rs |   47 +++++++++++++++++++++++++----------------------
 1 files changed, 25 insertions(+), 22 deletions(-)
---
diff --git a/rust/src/parsers.rs b/rust/src/parsers.rs
index 56ba7a3..7220ac5 100644
--- a/rust/src/parsers.rs
+++ b/rust/src/parsers.rs
@@ -37,28 +37,31 @@ pub fn angle_degrees (s: &str) -> Result <f64, ParseError> {
     let mut input = ParserInput::new (s);
     let mut parser = Parser::new (&mut input);
 
-    let token = parser.next ()
-        .map_err (|_| ParseError::new ("expected angle"))?;
+    let angle = {
+        let token = parser.next ()
+            .map_err (|_| ParseError::new ("expected angle"))?;
 
-    match token {
-        &Token::Number { value, .. } => Ok (value as f64),
+        match token {
+            &Token::Number { value, .. } => value as f64,
 
-        &Token::Dimension { value, ref unit, .. } => {
-            let value = value as f64;
+            &Token::Dimension { value, ref unit, .. } => {
+                let value = value as f64;
 
-            match unit.as_ref () {
-                "deg"  => Ok (value),
-                "grad" => Ok (value * 360.0 / 400.0),
-                "rad"  => Ok (value * 180.0 / PI),
-                _      => Err (ParseError::new ("expected angle"))
-            }
-        },
+                match unit.as_ref () {
+                    "deg"  => value,
+                    "grad" => value * 360.0 / 400.0,
+                    "rad"  => value * 180.0 / PI,
+                    _      => return Err (ParseError::new ("expected angle"))
+                }
+            },
+
+            _ => return Err (ParseError::new ("expected angle"))
+        }
+    };
+    
+    parser.expect_exhausted ().map_err (|_| ParseError::new ("expected angle"))?;
 
-        _ => Err (ParseError::new ("expected angle"))
-    }.and_then (|r|
-                parser.expect_exhausted ()
-                .map (|_| r)
-                .map_err (|_| ParseError::new ("expected angle")))
+    Ok (angle)
 }
 
 fn optional_comma (parser: &mut Parser) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]