pinenut-derive 0.0.1

The internal derive crate for `pinenut-log`, it implements some derive macros.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use proc_macro2::TokenStream;
use syn::{parse_quote, GenericParam, Generics};

/// Add the trait bounds to every type parameter T: `T: A + B + C`.
pub fn add_traits_bounds(
    mut generics: Generics,
    trait_bounds: impl IntoIterator<Item = TokenStream>,
) -> Generics {
    for trait_bound in trait_bounds.into_iter() {
        for param in &mut generics.params {
            if let GenericParam::Type(ty_param) = param {
                ty_param.bounds.push(parse_quote! { #trait_bound })
            }
        }
    }
    generics
}