Skip to content

Commit 80ccf63

Browse files
committed
Disallow inf and NaN as values for unit types in input files
Fixes #426.
1 parent 53f2877 commit 80ccf63

1 file changed

Lines changed: 13 additions & 1 deletion

File tree

src/units.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ macro_rules! base_unit_struct {
5353
PartialOrd,
5454
Default,
5555
Serialize,
56-
Deserialize,
5756
derive_more::Add,
5857
derive_more::Sub,
5958
)]
@@ -131,6 +130,19 @@ macro_rules! base_unit_struct {
131130
self.0.total_cmp(&other.0)
132131
}
133132
}
133+
impl<'de> Deserialize<'de> for $name {
134+
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
135+
where
136+
D: serde::Deserializer<'de>,
137+
{
138+
let value = f64::deserialize(deserializer)?;
139+
if !value.is_finite() {
140+
Err(serde::de::Error::custom("Value cannot be NaN or infinite"))?;
141+
}
142+
143+
Ok($name(value))
144+
}
145+
}
134146
impl UnitType for $name {
135147
/// Create from an f64 value
136148
fn new(value: f64) -> Self {

0 commit comments

Comments
 (0)