aboutsummaryrefslogtreecommitdiff
path: root/src/de.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/de.rs')
-rw-r--r--src/de.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/de.rs b/src/de.rs
index c2679f5..e033950 100644
--- a/src/de.rs
+++ b/src/de.rs
@@ -6,6 +6,7 @@
use std::borrow::Cow;
use std::error;
+use std::f64;
use std::fmt;
use std::str;
use std::vec;
@@ -882,6 +883,14 @@ impl<'a> Deserializer<'a> {
}
_ => Err(self.error(at, ErrorKind::NumberInvalid)),
}
+ } else if s == "inf" {
+ Ok(Value { e: E::Float(f64::INFINITY), start: start, end: end })
+ } else if s == "-inf" {
+ Ok(Value { e: E::Float(f64::NEG_INFINITY), start: start, end: end })
+ } else if s == "nan" {
+ Ok(Value { e: E::Float(f64::NAN), start: start, end: end })
+ } else if s == "-nan" {
+ Ok(Value { e: E::Float(-f64::NAN), start: start, end: end })
} else {
self.integer(s).map(|f| Value { e: E::Integer(f), start: start, end: end })
}