20 lines
493 B
Rust
20 lines
493 B
Rust
use std::str::FromStr;
|
|
|
|
use rust_decimal::Decimal;
|
|
|
|
use crate::{InputValueError, InputValueResult, Scalar, ScalarType, Value};
|
|
|
|
#[Scalar(internal, name = "Decimal")]
|
|
impl ScalarType for Decimal {
|
|
fn parse(value: Value) -> InputValueResult<Self> {
|
|
match &value {
|
|
Value::String(s) => Ok(Decimal::from_str(s)?),
|
|
_ => Err(InputValueError::expected_type(value)),
|
|
}
|
|
}
|
|
|
|
fn to_value(&self) -> Value {
|
|
Value::String(self.to_string())
|
|
}
|
|
}
|