use std::sync::Arc;
use crate::{GraphQLType, ScalarValue};
pub trait GraphQLObjectType<S: ScalarValue>: GraphQLType<S> {
fn mark() {}
}
impl<'a, S, T> GraphQLObjectType<S> for &T
where
T: GraphQLObjectType<S> + ?Sized,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<S, T> GraphQLObjectType<S> for Box<T>
where
T: GraphQLObjectType<S> + ?Sized,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<S, T> GraphQLObjectType<S> for Arc<T>
where
T: GraphQLObjectType<S> + ?Sized,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
pub trait GraphQLInterface<S: ScalarValue>: GraphQLType<S> {
fn mark() {}
}
impl<'a, S, T> GraphQLInterface<S> for &T
where
T: GraphQLInterface<S> + ?Sized,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<S, T> GraphQLInterface<S> for Box<T>
where
T: GraphQLInterface<S> + ?Sized,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<S, T> GraphQLInterface<S> for Arc<T>
where
T: GraphQLInterface<S> + ?Sized,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
pub trait GraphQLUnion<S: ScalarValue>: GraphQLType<S> {
fn mark() {}
}
impl<'a, S, T> GraphQLUnion<S> for &T
where
T: GraphQLUnion<S> + ?Sized,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<S, T> GraphQLUnion<S> for Box<T>
where
T: GraphQLUnion<S> + ?Sized,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<S, T> GraphQLUnion<S> for Arc<T>
where
T: GraphQLUnion<S> + ?Sized,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
pub trait IsOutputType<S: ScalarValue> {
fn mark() {}
}
impl<'a, S, T> IsOutputType<S> for &T
where
T: IsOutputType<S> + ?Sized,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<S, T> IsOutputType<S> for Box<T>
where
T: IsOutputType<S> + ?Sized,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<S, T> IsOutputType<S> for Arc<T>
where
T: IsOutputType<S> + ?Sized,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<S, T> IsOutputType<S> for Option<T>
where
T: IsOutputType<S>,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<S, T> IsOutputType<S> for Vec<T>
where
T: IsOutputType<S>,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<S, T> IsOutputType<S> for [T]
where
T: IsOutputType<S>,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<'a, S> IsOutputType<S> for str where S: ScalarValue {}
pub trait IsInputType<S: ScalarValue>: GraphQLType<S> {
fn mark() {}
}
impl<'a, S, T> IsInputType<S> for &T
where
T: IsInputType<S> + ?Sized,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<S, T> IsInputType<S> for Box<T>
where
T: IsInputType<S> + ?Sized,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<S, T> IsInputType<S> for Arc<T>
where
T: IsInputType<S> + ?Sized,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<S, T> IsInputType<S> for Option<T>
where
T: IsInputType<S>,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<S, T> IsInputType<S> for Vec<T>
where
T: IsInputType<S>,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<S, T> IsInputType<S> for [T]
where
T: IsInputType<S>,
S: ScalarValue,
{
#[inline]
fn mark() {
T::mark()
}
}
impl<'a, S> IsInputType<S> for str where S: ScalarValue {}