dynamic-graphql-derive 0.10.2

Dynamic GraphQL schema macro
Documentation
use proc_macro2::TokenStream;
use syn::spanned::Spanned;

pub trait IntoTokenStream {
    fn into_token_stream(self) -> TokenStream;
}

impl IntoTokenStream for darling::Result<TokenStream> {
    fn into_token_stream(self) -> TokenStream {
        match self {
            Ok(tokens) => tokens,
            Err(err) => err.write_errors(),
        }
    }
}

impl IntoTokenStream for darling::Result<Option<TokenStream>> {
    fn into_token_stream(self) -> TokenStream {
        match self {
            Ok(tokens) => tokens.unwrap_or_default(),
            Err(err) => err.write_errors(),
        }
    }
}

pub trait WithSpan {
    fn with_span<T: Spanned>(self, node: &T) -> Self;
}

impl<T> WithSpan for darling::Result<T> {
    fn with_span<N: Spanned>(self, node: &N) -> Self {
        self.map_err(|e| e.with_span(node))
    }
}