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§

source

fn parse(value: Value) -> InputValueResult<Self>

Parse a scalar value.

source

fn to_value(&self) -> Value

Convert the scalar to Value.

Provided Methods§

source

fn is_valid(_value: &Value) -> bool

Checks for a valid scalar value.

Implementing this function can find incorrect input values during the verification phase, which can improve performance.

Implementations on Foreign Types§

source§

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 Bson

source§

impl ScalarType for u64

The Int scalar type represents non-fractional whole numeric values.

source§

impl ScalarType for usize

The Int scalar type represents non-fractional whole numeric values.

source§

impl ScalarType for isize

The Int scalar type represents non-fractional whole numeric values.

source§

impl ScalarType for bool

The Boolean scalar type represents true or false.

source§

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 i16

The Int scalar type represents non-fractional whole numeric values.

source§

impl ScalarType for Uuid

source§

impl ScalarType for ObjectId

source§

impl ScalarType for Date

ISO 8601 calendar date without timezone. Format: %Y-%m-%d

Examples

  • 1994-11-13
  • 2000-02-24
source§

impl ScalarType for NaiveDate

ISO 8601 calendar date without timezone. Format: %Y-%m-%d

Examples

  • 1994-11-13
  • 2000-02-24
source§

impl ScalarType for Bytes

The Binary scalar type represents binary data.

source§

impl ScalarType for NonZeroI16

The Int scalar type represents non-fractional whole numeric values.

source§

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 NonZeroU8

The Int scalar type represents non-fractional whole numeric values.

source§

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 f32

The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.

source§

impl ScalarType for SmolStr

source§

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 NonZeroU16

The Int scalar type represents non-fractional whole numeric values.

source§

impl ScalarType for NonZeroI32

The Int scalar type represents non-fractional whole numeric values.

source§

impl ScalarType for Decimal

source§

impl ScalarType for i32

The Int scalar type represents non-fractional whole numeric values.

source§

impl ScalarType for Url

URL is a String implementing the URL Standard

source§

impl ScalarType for f64

The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.

source§

impl ScalarType for NonZeroI64

The Int scalar type represents non-fractional whole numeric values.

source§

impl ScalarType for Duration

Implement the Duration scalar

The input/output is a string in ISO8601 format.

source§

impl ScalarType for i8

The Int scalar type represents non-fractional whole numeric values.

source§

impl ScalarType for NonZeroU32

The Int scalar type represents non-fractional whole numeric values.

source§

impl ScalarType for Document

source§

impl ScalarType for u8

The Int scalar type represents non-fractional whole numeric values.

source§

impl ScalarType for DateTime<Utc>

Implement the DateTime scalar

The input/output is a string in RFC3339 format.

source§

impl ScalarType for DateTime<FixedOffset>

Implement the DateTime scalar

The input/output is a string in RFC3339 format.

source§

impl ScalarType for DateTime

source§

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 DateTime<Local>

Implement the DateTime scalar

The input/output is a string in RFC3339 format.

source§

impl ScalarType for NonZeroU64

The Int scalar type represents non-fractional whole numeric values.

source§

impl ScalarType for BigDecimal

source§

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 u16

The Int scalar type represents non-fractional whole numeric values.

source§

impl ScalarType for i64

The Int scalar type represents non-fractional whole numeric values.

source§

impl ScalarType for NonZeroI8

The Int scalar type represents non-fractional whole numeric values.

source§

impl ScalarType for Tz

source§

impl ScalarType for NaiveDateTime

ISO 8601 combined date and time without timezone.

Examples

  • 2015-07-01T08:59:60.123,
source§

impl ScalarType for u32

The Int scalar type represents non-fractional whole numeric values.

Implementors§

source§

impl ScalarType for Any

The _Any scalar is used to pass representations of entities from external services into the root _entities field for execution.

source§

impl ScalarType for ID

source§

impl<T: Num + Display + Send + Sync> ScalarType for StringNumber<T>where <T as Num>::FromStrRadixErr: Display,