1#[doc(hidden)]
2#[macro_export]
3macro_rules! do_not_use {
4 ($($item:item)*) => ($($item)*);
5}
6
7#[macro_export]
8macro_rules! trait_alias_macro {
9 ($name:ident = $($base:tt)+) => {
10 ::trait_alias_macro::do_not_use! {
11 trait $name: $($base)+ { }
12 impl<T: $($base)+> $name for T { }
13 }
14 };
15}
16
17#[macro_export]
18macro_rules! pub_trait_alias_macro {
19 ($name:ident = $($base:tt)+) => {
20 ::trait_alias_macro::do_not_use! {
21 pub trait $name: $($base)+ { }
22 impl<T: $($base)+> $name for T { }
23 }
24 };
25}