pub struct Scalar { /* private fields */ }
Expand description

A GraphQL scalar type

Examples

use async_graphql::{dynamic::*, value, Value};

let my_scalar = Scalar::new("MyScalar");

let query = Object::new("Query").field(Field::new("value", TypeRef::named_nn(my_scalar.type_name()), |ctx| {
    FieldFuture::new(async move { Ok(Some(Value::from("abc"))) })
}));


let schema = Schema::build(query.type_name(), None, None)
    .register(my_scalar)
    .register(query)
    .finish()?;

assert_eq!(
   schema
       .execute("{ value }")
       .await
       .into_result()
       .unwrap()
       .data,
   value!({ "value": "abc" })
);

Implementations§

source§

impl Scalar

source

pub fn new(name: impl Into<String>) -> Scalar

Create a GraphQL scalar type

source

pub fn description(self, description: impl Into<String>) -> Scalar

Set the description

source

pub fn inaccessible(self) -> Scalar

Indicate that an enum is not accessible from a supergraph when using Apollo Federation

Reference: https://www.apollographql.com/docs/federation/federated-types/federated-directives/#inaccessible

source

pub fn tags<I, T>(self, tags: I) -> Scalarwhere I: IntoIterator<Item = T>, T: Into<String>,

Arbitrary string metadata that will be propagated to the supergraph when using Apollo Federation. This attribute is repeatable

Reference: https://www.apollographql.com/docs/federation/federated-types/federated-directives/#applying-metadata

source

pub fn validator( self, validator: impl Fn(&ConstValue) -> bool + Send + Sync + 'static ) -> Scalar

Set the validator

source

pub fn specified_by_url(self, specified_by_url: impl Into<String>) -> Scalar

Set the specified by url

source

pub fn type_name(&self) -> &str

Returns the type name

Trait Implementations§

source§

impl Debug for Scalar

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl From<Scalar> for Type

source§

fn from(scalar: Scalar) -> Type

Converts to this type from the input type.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Scalar

§

impl Send for Scalar

§

impl Sync for Scalar

§

impl Unpin for Scalar

§

impl !UnwindSafe for Scalar

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.