2020-09-13 03:41:15 +00:00
use crate ::{ GQLScalar , InputValueError , InputValueResult , ScalarType , Value } ;
2020-03-02 00:24:49 +00:00
2020-08-31 08:12:12 +00:00
/// The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).
2020-09-13 03:41:15 +00:00
#[ GQLScalar(internal, name = " Float " ) ]
2020-08-31 08:12:12 +00:00
impl ScalarType for f32 {
fn parse ( value : Value ) -> InputValueResult < Self > {
match value {
Value ::Number ( n ) = > Ok ( n
. as_f64 ( )
. ok_or_else ( | | InputValueError ::from ( " Invalid number " ) ) ?
as Self ) ,
_ = > Err ( InputValueError ::ExpectedType ( value ) ) ,
}
}
2020-03-02 00:24:49 +00:00
2020-08-31 08:12:12 +00:00
fn is_valid ( value : & Value ) -> bool {
match value {
Value ::Number ( _ ) = > true ,
_ = > false ,
2020-05-28 02:26:07 +00:00
}
2020-08-31 08:12:12 +00:00
}
fn to_value ( & self ) -> Value {
Value ::Number ( serde_json ::Number ::from_f64 ( * self as f64 ) . unwrap ( ) )
2020-05-28 02:26:07 +00:00
}
}
2020-07-28 14:13:07 +00:00
2020-08-31 08:12:12 +00:00
/// The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).
2020-09-13 03:41:15 +00:00
#[ GQLScalar(internal, name = " Float " ) ]
2020-08-31 08:12:12 +00:00
impl ScalarType for f64 {
fn parse ( value : Value ) -> InputValueResult < Self > {
match value {
Value ::Number ( n ) = > Ok ( n
. as_f64 ( )
. ok_or_else ( | | InputValueError ::from ( " Invalid number " ) ) ?
as Self ) ,
_ = > Err ( InputValueError ::ExpectedType ( value ) ) ,
}
}
fn is_valid ( value : & Value ) -> bool {
match value {
Value ::Number ( _ ) = > true ,
_ = > false ,
}
}
fn to_value ( & self ) -> Value {
Value ::Number ( serde_json ::Number ::from_f64 ( * self as f64 ) . unwrap ( ) )
}
}