1mod from_row;
5mod from_sql;
6mod query;
8
9use proc_macro::TokenStream;
10use syn::{GenericParam, Generics, TypeParamBound};
11
12#[proc_macro_attribute]
14pub fn query(attr: TokenStream, item: TokenStream) -> TokenStream {
15 query::query(attr, item)
16}
17
18#[proc_macro_derive(FromRow)]
20pub fn derive_from_row(input: TokenStream) -> TokenStream {
21 from_row::derive_from_row(input)
22}
23
24#[proc_macro_derive(FromSql)]
26pub fn derive_from_sql(input: TokenStream) -> TokenStream {
27 from_sql::derive_from_sql(input)
28}
29
30fn add_trait_bounds(mut generics: Generics, bounds: TypeParamBound) -> Generics {
32 for param in &mut generics.params {
33 if let GenericParam::Type(ref mut type_param) = *param {
34 type_param.bounds.push(bounds.clone());
35 }
36 }
37 generics
38}