1mod derive_chemin;
4mod helpers;
5
6use proc_macro::TokenStream;
7
8fn chemin_crate() -> proc_macro2::TokenStream {
9 use proc_macro2::{Ident, Span};
10 use proc_macro_crate::FoundCrate;
11 use quote::quote;
12
13 match proc_macro_crate::crate_name("chemin").unwrap() {
14 FoundCrate::Itself => quote!(::chemin),
15
16 FoundCrate::Name(name) => {
17 let ident = Ident::new(&name, Span::call_site());
18 quote!(::#ident)
19 }
20 }
21}
22
23#[proc_macro_derive(Chemin, attributes(route, query_param))]
24pub fn derive_chemin(item: TokenStream) -> TokenStream {
25 derive_chemin::derive_chemin(item.into(), &chemin_crate()).into()
26}