| 14 | } |
| 15 | impl Paths { |
| 16 | fn from(info: &EnumSetInfo) -> Paths { |
| 17 | let name = &info.name; |
| 18 | let enumset = match &info.crate_name { |
| 19 | Some(crate_name) => quote!(::#crate_name), |
| 20 | None => { |
| 21 | #[cfg(feature = "proc-macro-crate")] |
| 22 | { |
| 23 | use proc_macro_crate::FoundCrate; |
| 24 | |
| 25 | let crate_name = proc_macro_crate::crate_name("enumset"); |
| 26 | match crate_name { |
| 27 | Ok(FoundCrate::Name(name)) => { |
| 28 | let ident = |
| 29 | proc_macro2::Ident::new(&name, proc_macro2::Span::call_site()); |
| 30 | quote!(::#ident) |
| 31 | } |
| 32 | _ => quote!(::enumset), |
| 33 | } |
| 34 | } |
| 35 | |
| 36 | #[cfg(not(feature = "proc-macro-crate"))] |
| 37 | { |
| 38 | quote!(::enumset) |
| 39 | } |
| 40 | } |
| 41 | }; |
| 42 | let typed_enumset = quote!(#enumset::EnumSet<#name>); |
| 43 | let core = quote!(#enumset::__internal::core_export); |
| 44 | let internal = quote!(#enumset::__internal); |
| 45 | let serde = quote!(#enumset::__internal::serde); |
| 46 | Paths { enumset, typed_enumset, core, internal, serde } |
| 47 | } |
| 48 | } |
| 49 | |
| 50 | /// Generates the actual `EnumSetType` impl. |