Macro juniper::graphql_union [] [src]

macro_rules! graphql_union {
    ( @as_item, $i:item) => { ... };
    ( @as_expr, $e:expr) => { ... };
    ( @as_path, $p:path) => { ... };
    ( @as_type, $t:ty) => { ... };
    (
        @ gather_meta,
        ($reg:expr, $acc:expr, $descr:expr),
        description : $value:tt $( $rest:tt )*
    ) => { ... };
    (
        @ gather_meta,
        ($reg:expr, $acc:expr, $descr:expr),
        instance_resolvers: | $ctxtvar:pat | { $( $srctype:ty => $resolver:expr ),* $(,)* } $( $rest:tt )*
    ) => { ... };
    (
        @ concrete_type_name,
        ($outname:tt, $ctxtarg:ident, $ctxttype:ty),
        instance_resolvers: | $ctxtvar:pat | { $( $srctype:ty => $resolver:expr ),* $(,)* } $( $rest:tt )*
    ) => { ... };
    (
        @ resolve_into_type,
        ($outname:tt, $typenamearg:ident, $execarg:ident, $ctxttype:ty),
        instance_resolvers: | $ctxtvar:pat | { $( $srctype:ty => $resolver:expr ),* $(,)* } $( $rest:tt )*
    ) => { ... };
    ( @ $mfn:ident, $args:tt, , $($rest:tt)* ) => { ... };
    ( @ $mfn:ident, $args:tt, $item:tt $($rest:tt)* ) => { ... };
    ( @ $mfn:ident, $args:tt, ) => { ... };
    (
        ( $($lifetime:tt),* ) $name:ty : $ctxt:ty as $outname:tt | &$mainself:ident | {
            $( $items:tt )*
        }
    ) => { ... };
    (
        <$($lifetime:tt),*> $name:ty : $ctxt:ty as $outname:tt | &$mainself:ident | {
            $( $items:tt )*
        }
    ) => { ... };
    (
        $name:ty : $ctxt:ty as $outname:tt | &$mainself:ident | {
            $( $items:tt )*
        }
    ) => { ... };
    (
        $name:ty : $ctxt:ty | &$mainself:ident | {
            $( $items:tt )*
        }
    ) => { ... };
}

Expose GraphQL unions

Like interfaces, mapping unions can be tricky in idiomatic Rust. Because of their similarity, the helper macros are similar, too: you provide a set of expressions that resolve the union into the actual concrete type.

Syntax

See the documentation for graphql_object! on the general item and type syntax. graphql_union! supports only description and interface_resolvers items, no fields or interfaces can be declared.

See the documentation for graphql_interface! on the syntax for interface resolvers.