async_graphql_derive/
description.rs

1use proc_macro::TokenStream;
2use quote::quote;
3
4use crate::{
5    args,
6    utils::{GeneratorResult, get_crate_path, get_rustdoc},
7};
8
9pub fn generate(desc_args: &args::Description) -> GeneratorResult<TokenStream> {
10    let crate_name = get_crate_path(&desc_args.crate_path, desc_args.internal);
11    let ident = &desc_args.ident;
12    let (impl_generics, ty_generics, where_clause) = desc_args.generics.split_for_impl();
13    let doc = get_rustdoc(&desc_args.attrs)?.unwrap_or_default();
14    let expanded = quote! {
15        impl #impl_generics #crate_name::Description for #ident #ty_generics #where_clause {
16            fn description() -> &'static str {
17                #doc
18            }
19        }
20    };
21    Ok(expanded.into())
22}