INNER CODE UNIT · Rust
value_deser_impl
obmarg/cynic · cynic-parser-deser-macros/src/lib.rs:28
fn value_deser_impl(ast: &syn::DeriveInput) -> Result<TokenStream, syn::Error> {
let syn::Data::Struct(data) = &ast.data else {
panic!("ValueDeserialize can only be derived on structs");
};
let ident = &ast.ident;
let (original_impl_generics, ty_generics, where_clause) = ast.generics.split_for_impl();
let (impl_generics, deser_lifetime) = match ast.generics.lifetimes().next() {
Some(lifetime) => {
let mut lifetime = lifetime.clone();
lifetime.attrs = vec![];
lifetime.bounds = Default::default();
lifetime.colon_token = None;
(original_impl_generics.to_token_stream(), lifetime)
}
None => {
let mut generics = ast.generics.clone();