aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbnewbold <bnewbold@robocracy.org>2016-04-20 17:06:35 -0400
committerbnewbold <bnewbold@robocracy.org>2016-04-20 17:06:35 -0400
commit28e45349e4eb5867a1b75c5b93f7fa0653485edd (patch)
tree1681ec9a9dba1f83e7467d7d3055b03667e56834
parent3864f6e60b4a944c55736756d9a14e48d860efd4 (diff)
downloadspectrum-28e45349e4eb5867a1b75c5b93f7fa0653485edd.tar.gz
spectrum-28e45349e4eb5867a1b75c5b93f7fa0653485edd.zip
rust: unwrap single-expr parse results
-rw-r--r--minimal.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/minimal.rs b/minimal.rs
index c0fe3e8..7ddd8d6 100644
--- a/minimal.rs
+++ b/minimal.rs
@@ -154,7 +154,11 @@ fn scheme_parse<'a>(tokens: &Vec<&'a str>, depth: u32) -> Result<(SchemeExpr<'a>
return Err("missing a close bracket");
}
let rlen = ret.len();
- return Ok((SchemeExpr::SchemeList(ret), rlen));
+ if depth == 0 && rlen == 1 {
+ return Ok((ret.pop().unwrap(), rlen));
+ } else {
+ return Ok((SchemeExpr::SchemeList(ret), rlen));
+ }
}
fn scheme_repr<'a>(ast: &SchemeExpr) -> Result<String, &'static str> {