aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.toml2
-rw-r--r--src/lib.rs8
-rw-r--r--src/parser.rs8
3 files changed, 10 insertions, 8 deletions
diff --git a/Cargo.toml b/Cargo.toml
index d83497f..ba1b58a 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "toml"
-version = "0.1.15"
+version = "0.1.16"
authors = ["Alex Crichton <alex@alexcrichton.com>"]
license = "MIT/Apache-2.0"
readme = "README.md"
diff --git a/src/lib.rs b/src/lib.rs
index 10e2009..89a72e7 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -191,7 +191,7 @@ impl Value {
}
},
&Value::Array(ref v) => {
- match key.parse::<usize>() {
+ match key.parse::<usize>().ok() {
Some(idx) if idx < v.len() => cur_value = &v[idx],
_ => return None
}
@@ -205,8 +205,10 @@ impl Value {
}
impl FromStr for Value {
- fn from_str(s: &str) -> Option<Value> {
- Parser::new(s).parse().map(Value::Table)
+ type Err = Vec<ParserError>;
+ fn from_str(s: &str) -> Result<Value, Vec<ParserError>> {
+ let mut p = Parser::new(s);
+ p.parse().map(Value::Table).ok_or(p.errors)
}
}
diff --git a/src/parser.rs b/src/parser.rs
index 4316df3..723ac3a 100644
--- a/src/parser.rs
+++ b/src/parser.rs
@@ -132,7 +132,7 @@ impl<'a> Parser<'a> {
// Consumes the rest of the line after a comment character
fn comment(&mut self) -> bool {
if !self.eat('#') { return false }
- for (_, ch) in self.cur {
+ for (_, ch) in self.cur.by_ref() {
if ch == '\n' { break }
}
true
@@ -379,7 +379,7 @@ impl<'a> Parser<'a> {
} else {
"invalid"
};
- match FromStrRadix::from_str_radix(num, 16) {
+ match FromStrRadix::from_str_radix(num, 16).ok() {
Some(n) => {
match char::from_u32(n) {
Some(c) => {
@@ -497,9 +497,9 @@ impl<'a> Parser<'a> {
} else {
let input = input.trim_left_matches('+');
if is_float {
- input.parse().map(Float)
+ input.parse().ok().map(Float)
} else {
- input.parse().map(Integer)
+ input.parse().ok().map(Integer)
}
};
if ret.is_none() {