pub trait ScalarType: Sized + Send {
// Required methods
fn parse(value: Value) -> InputValueResult<Self>;
fn to_value(&self) -> Value;
// Provided method
fn is_valid(_value: &Value) -> bool { ... }
}
Expand description
A GraphQL scalar.
You can implement the trait to create a custom scalar.
§Examples
use async_graphql::*;
struct MyInt(i32);
#[Scalar]
impl ScalarType for MyInt {
fn parse(value: Value) -> InputValueResult<Self> {
if let Value::Number(n) = &value {
if let Some(n) = n.as_i64() {
return Ok(MyInt(n as i32));
}
}
Err(InputValueError::expected_type(value))
}
fn to_value(&self) -> Value {
Value::Number(self.0.into())
}
}
Required Methods§
sourcefn parse(value: Value) -> InputValueResult<Self>
fn parse(value: Value) -> InputValueResult<Self>
Parse a scalar value.
Provided Methods§
Object Safety§
Implementations on Foreign Types§
source§impl ScalarType for Bson
impl ScalarType for Bson
source§impl ScalarType for Tz
impl ScalarType for Tz
source§impl ScalarType for bool
impl ScalarType for bool
The Boolean
scalar type represents true
or false
.
source§impl ScalarType for char
impl ScalarType for char
The Char
scalar type represents a unicode char.
The input and output values are a string, and there can only be one unicode
character in this string.
source§impl ScalarType for f32
impl ScalarType for f32
The Float
scalar type represents signed double-precision fractional values as specified by IEEE 754.
source§impl ScalarType for f64
impl ScalarType for f64
The Float
scalar type represents signed double-precision fractional values as specified by IEEE 754.
source§impl ScalarType for i8
impl ScalarType for i8
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for i16
impl ScalarType for i16
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for i32
impl ScalarType for i32
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for i64
impl ScalarType for i64
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for isize
impl ScalarType for isize
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for u8
impl ScalarType for u8
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for u16
impl ScalarType for u16
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for u32
impl ScalarType for u32
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for u64
impl ScalarType for u64
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for usize
impl ScalarType for usize
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for String
impl ScalarType for String
The String
scalar type represents textual data, represented as UTF-8
character sequences. The String type is most often used by GraphQL to
represent free-form human-readable text.
source§impl ScalarType for BigDecimal
impl ScalarType for BigDecimal
source§impl ScalarType for DateTime
impl ScalarType for DateTime
source§impl ScalarType for Document
impl ScalarType for Document
source§impl ScalarType for ObjectId
impl ScalarType for ObjectId
source§impl ScalarType for Uuid
impl ScalarType for Uuid
source§impl ScalarType for Bytes
impl ScalarType for Bytes
The Binary
scalar type represents binary data.
source§impl ScalarType for DateTime<FixedOffset>
impl ScalarType for DateTime<FixedOffset>
Implement the DateTime
The input/output is a string in RFC3339 format.
source§impl ScalarType for DateTime<Local>
impl ScalarType for DateTime<Local>
Implement the DateTime
The input/output is a string in RFC3339 format.
source§impl ScalarType for DateTime<Utc>
impl ScalarType for DateTime<Utc>
Implement the DateTime
The input/output is a string in RFC3339 format.
source§impl ScalarType for NaiveDate
impl ScalarType for NaiveDate
source§impl ScalarType for NaiveDateTime
impl ScalarType for NaiveDateTime
source§impl ScalarType for NaiveTime
impl ScalarType for NaiveTime
ISO 8601 time without timezone. Allows for the nanosecond precision and optional leap second representation. Format: %H:%M:%S%.f
§Examples
08:59:60.123
source§impl ScalarType for Decimal
impl ScalarType for Decimal
source§impl ScalarType for SmolStr
impl ScalarType for SmolStr
source§impl ScalarType for Date
impl ScalarType for Date
source§impl ScalarType for OffsetDateTime
impl ScalarType for OffsetDateTime
A datetime with timezone offset.
The input is a string in RFC3339 format, e.g. “2022-01-12T04:00:19.12345Z” or “2022-01-12T04:00:19+03:00”. The output is also a string in RFC3339 format, but it is always normalized to the UTC (Z) offset, e.g. “2022-01-12T04:00:19.12345Z”.
source§impl ScalarType for PrimitiveDateTime
impl ScalarType for PrimitiveDateTime
A local datetime without timezone offset.
The input/output is a string in ISO 8601 format without timezone, including subseconds. E.g. “2022-01-12T07:30:19.12345”.
source§impl ScalarType for Url
impl ScalarType for Url
URL is a String implementing the URL Standard
source§impl ScalarType for Uuid
impl ScalarType for Uuid
A UUID is a unique 128-bit number, stored as 16 octets. UUIDs are parsed as Strings within GraphQL. UUIDs are used to assign unique identifiers to entities without requiring a central allocating authority.
§References
source§impl ScalarType for NonZeroI8
impl ScalarType for NonZeroI8
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for NonZeroI16
impl ScalarType for NonZeroI16
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for NonZeroI32
impl ScalarType for NonZeroI32
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for NonZeroI64
impl ScalarType for NonZeroI64
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for NonZeroIsize
impl ScalarType for NonZeroIsize
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for NonZeroU8
impl ScalarType for NonZeroU8
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for NonZeroU16
impl ScalarType for NonZeroU16
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for NonZeroU32
impl ScalarType for NonZeroU32
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for NonZeroU64
impl ScalarType for NonZeroU64
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for NonZeroUsize
impl ScalarType for NonZeroUsize
The Int
scalar type represents non-fractional whole numeric values.
source§impl ScalarType for Duration
impl ScalarType for Duration
Implement the Duration scalar
The input/output is a string in ISO8601 format.
Implementors§
impl ScalarType for Any
The _Any
scalar is used to pass representations of entities from external
services into the root _entities
field for execution.