enum_delegate_lib/generate/
helper_mod.rs1use proc_macro2::{Ident, TokenStream};
4use quote::{format_ident, quote};
5use syn::{ItemEnum, ItemTrait};
6
7pub fn helper_mod_name(parsed_trait: &ItemTrait, parsed_enum: &ItemEnum) -> Ident {
9 format_ident!(
10 "enum_delegate_helpers_{}_for_{}",
11 parsed_trait.ident,
12 parsed_enum.ident,
13 )
14}
15
16pub fn generate_helper_mod(mod_name: &Ident) -> TokenStream {
18 quote! {
19 #[allow(non_snake_case)]
20 mod #mod_name {
21 pub trait EqualTypes: private::Sealed {}
25
26 impl<T> EqualTypes for (T, T) {}
27
28 mod private {
29 pub trait Sealed {}
30
31 impl<T> Sealed for (T, T) {}
32 }
33 }
34 }
35}