use proc_macro2::TokenStream;
use syn::{parse_quote, GenericParam, Generics, WhereClause, WherePredicate};
pub(crate) fn strip_type_defaults(mut generics: Generics) -> Generics {
for param in &mut generics.params {
if let GenericParam::Type(type_param) = param {
type_param.default = None;
}
}
generics
}
pub(crate) fn add_where_predicates<I>(
mut generics: Generics,
predicates: I,
_crate_path: &TokenStream,
) -> Generics
where
I: IntoIterator<Item = WherePredicate>,
{
let where_clause = generics.where_clause.get_or_insert_with(empty_where_clause);
for predicate in predicates {
where_clause.predicates.push(predicate);
}
generics
}
fn empty_where_clause() -> WhereClause {
parse_quote!(where)
}