can_dbc/ast/
numeric_value.rs1use std::str::FromStr;
2
3use crate::DbcError;
4
5#[derive(Clone, Debug, PartialEq)]
6#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7pub enum NumericValue {
8 Uint(u64),
9 Int(i64),
10 Double(f64),
11}
12
13impl FromStr for NumericValue {
14 type Err = DbcError;
15
16 fn from_str(value: &str) -> Result<Self, Self::Err> {
17 if let Ok(v) = value.parse::<u64>() {
18 Ok(NumericValue::Uint(v))
19 } else if let Ok(v) = value.parse::<i64>() {
20 Ok(NumericValue::Int(v))
21 } else if let Ok(v) = value.parse::<f64>() {
22 Ok(NumericValue::Double(v))
23 } else {
24 Err(DbcError::InvalidNumericValue(value.to_string()))
25 }
26 }
27}