cynic_codegen/
generics_for_serde.rs1use syn::parse_quote;
2
3pub(crate) fn with_de_and_deserialize_bounds(generics: &syn::Generics) -> syn::Generics {
4 let mut generics_with_de_and_deserialize_bounds = generics.clone();
5 generics_with_de_and_deserialize_bounds
6 .params
7 .push(parse_quote!('de));
8 for generic in &generics.params {
9 match generic {
10 syn::GenericParam::Type(type_) => {
11 let ident = &type_.ident;
12 generics_with_de_and_deserialize_bounds
13 .make_where_clause()
14 .predicates
15 .push(parse_quote! { #ident: cynic::serde::Deserialize<'de> })
16 }
17 syn::GenericParam::Lifetime(_) | syn::GenericParam::Const(_) => {}
18 }
19 }
20 generics_with_de_and_deserialize_bounds
21}
22
23pub(crate) fn with_serialize_bounds(generics: &syn::Generics) -> syn::Generics {
24 let mut generics_with_serialize_bounds = generics.clone();
25 for generic in &generics.params {
26 match generic {
27 syn::GenericParam::Type(type_) => {
28 let ident = &type_.ident;
29 generics_with_serialize_bounds
30 .make_where_clause()
31 .predicates
32 .push(parse_quote! { #ident: cynic::serde::Serialize })
33 }
34 syn::GenericParam::Lifetime(_) | syn::GenericParam::Const(_) => {}
35 }
36 }
37 generics_with_serialize_bounds
38}