fn build_generics(cont: &Container, borrowed: &BorrowedLifetimes) -> syn::Generics {
    let generics = bound::without_defaults(cont.generics);

    let generics = bound::with_where_predicates_from_fields(cont, &generics, attr::Field::de_bound);

    let generics =
        bound::with_where_predicates_from_variants(cont, &generics, attr::Variant::de_bound);

    match cont.attrs.de_bound() {
        Some(predicates) => bound::with_where_predicates(&generics, predicates),
        None => {
            let generics = match *cont.attrs.default() {
                attr::Default::Default => bound::with_self_bound(
                    cont,
                    &generics,
                    &parse_quote!(_serde::__private::Default),
                ),
                attr::Default::None | attr::Default::Path(_) => generics,
            };

            let delife = borrowed.de_lifetime();
            let generics = bound::with_bound(
                cont,
                &generics,
                needs_deserialize_bound,
                &parse_quote!(_serde::Deserialize<#delife>),
            );

            bound::with_bound(
                cont,
                &generics,
                requires_default,
                &parse_quote!(_serde::__private::Default),
            )
        }
    }
}
// All the generics in the input, plus a bound `T: Deserialize` for each generic
// field type that will be deserialized by us, plus a bound `T: Default` for
// each generic field type that will be set to a default value.
All the generics in the input, plus a bound `T: Deserialize` for each generic
field type that will be deserialized by us, plus a bound `T: Default` for
each generic field type that will be set to a default value.
All the generics in the input plus a bound ` T : Deserialize ` for each generic field type that will be deserialized by us plus a bound ` T : Default ` for each generic field type that will be set to a default value .
fn build_generics(cont: &Container, borrowed: &BorrowedLifetimes) -> syn::Generics {
    let generics = bound::without_defaults(cont.generics);
    let generics = bound::with_where_predicates_from_fields(cont, &generics, attr::Field::de_bound);
    let generics =
        bound::with_where_predicates_from_variants(cont, &generics, attr::Variant::de_bound);
    match cont.attrs.de_bound() {
        Some(predicates) => bound::with_where_predicates(&generics, predicates),
        None => {
            let generics = match *cont.attrs.default() {
                attr::Default::Default => bound::with_self_bound(
                    cont,
                    &generics,
                    &parse_quote!(_serde::__private::Default),
                ),
                attr::Default::None | attr::Default::Path(_) => generics,
            };
            let delife = borrowed.de_lifetime();
            let generics = bound::with_bound(
                cont,
                &generics,
                needs_deserialize_bound,
                &parse_quote!(_serde::Deserialize<#delife>),
            );
            bound::with_bound(
                cont,
                &generics,
                requires_default,
                &parse_quote!(_serde::__private::Default),
            )
        }
    }
}
fn build_generics ( cont : & Container , borrowed : & BorrowedLifetimes ) -> syn :: Generics { let generics = bound :: without_defaults ( cont . generics ) ; let generics = bound :: with_where_predicates_from_fields ( cont , & generics , attr :: Field :: de_bound ) ; let generics = bound :: with_where_predicates_from_variants ( cont , & generics , attr :: Variant :: de_bound ) ; match cont . attrs . de_bound ( ) { Some ( predicates ) => bound :: with_where_predicates ( & generics , predicates ) , None => { let generics = match * cont . attrs . default ( ) { attr :: Default :: Default => bound :: with_self_bound ( cont , & generics , & parse_quote ! ( _serde private Default ) , ) , attr :: Default :: None | attr :: Default :: Path ( _ ) => generics , } ; let delife = borrowed . de_lifetime ( ) ; let generics = bound :: with_bound ( cont , & generics , needs_deserialize_bound , & parse_quote ! ( _serde Deserialize delife ) , ) ; bound :: with_bound ( cont , & generics , requires_default , & parse_quote ! ( _serde private Default ) , ) } } }
All the generics in the input, plus a bound `T: Deserialize` for each generic
field type that will be deserialized by us, plus a bound `T: Default` for
each generic field type that will be set to a default value.
All the generics in the input plus a bound ` T : Deserialize ` for each generic field type that will be deserialized by us plus a bound ` T : Default ` for each generic field type that will be set to a default value .
cont
&Container
borrowed
&BorrowedLifetimes
cont
&Container
borrowed
&BorrowedLifetimes