#[doc = crate::_tags!(code)]
#[doc = crate::_doc_meta!{location("code/util")}]
#[doc = crate::_doc_vendor!("macro_rules_attribute")]
#[macro_export]
#[cfg_attr(cargo_primary_package, doc(hidden))]
macro_rules! macro_apply_alias {
() => {};
(
$(#[$meta:meta])*
$vis:vis $name:ident = $(#[$($attrs:tt)*])+;
$($rest:tt)*
) => {
$crate::macro_apply_alias! {% [$(#[$meta])*] $vis $name () ($(#[$($attrs)*])+) }
$crate::macro_apply_alias! { $($rest)* }
};
(
$(#[$meta:meta])*
$vis:vis $name:ident ($($params:tt)*) = $(#[$($attrs:tt)*])+;
$($rest:tt)*
) => {
$crate::macro_apply_alias! {% [$(#[$meta])*] $vis $name ($($params)*) ($(#[$($attrs)*])+) }
$crate::macro_apply_alias! { $($rest)* }
};
(% [$($meta:tt)*] $vis:vis $name:ident () ($(#[$($attrs:tt)*])+)) => {
$crate::macro_dollar! { ($d:tt) => { $crate::paste! {
#[allow(nonstandard_style)]
mod [<__mod_ $name __>] {
#[doc(hidden)]
#[allow(unused_macros)]
#[$crate::compile_attr(same($vis, pub), macro_export)]
macro_rules! [<__ $name __>] {
($d($item:tt)*) => { $(#[$($attrs)*])+ $d($item)* };
}
#[$crate::compile(none($vis))]
pub(super) use [<__$name __>] as $name;
#[$crate::compile(some($vis))]
$vis use [<__$name __>] as $name;
}
$($meta)*
#[allow(unused_imports)]
#[doc = "\n\n---"]
#[doc = "*Generated with [`macro_apply_alias`][$crate::macro_apply_alias]*."]
$vis use [<__mod_ $name __>]::$name;
}}}
};
(% [$($meta:tt)*] $vis:vis $name:ident ($($params:tt)*) ($(#[$($attrs:tt)*])+)) => {
$crate::macro_dollar! { ($d:tt) => { $crate::paste! {
#[allow(nonstandard_style)]
mod [<__mod_ $name __>] {
#[doc(hidden)]
#[allow(unused_macros)]
#[$crate::compile_attr(same($vis, pub), macro_export)]
macro_rules! [<__$name __>] {
(($($params)*) $d($item:tt)*) => { $(#[$($attrs)*])+ $d($item)* };
}
#[$crate::compile(none($vis))]
pub(super) use [<__$name __>] as $name;
#[$crate::compile(some($vis))]
$vis use [<__$name __>] as $name;
}
$($meta)*
#[allow(unused_imports)]
#[doc = "\n\n---"]
#[doc = "*Generated with [`macro_apply_alias`][$crate::macro_apply_alias]*."]
$vis use [<__mod_ $name __>]::$name;
}}}
};
}
#[doc(inline)]
pub use macro_apply_alias;
#[doc = crate::_tags!(code)]
#[doc = crate::_doc_meta!{location("code/util")}]
#[doc = crate::_doc_vendor!("macro_rules_attribute")]
#[macro_export]
#[cfg_attr(cargo_primary_package, doc(hidden))]
macro_rules! macro_derive_alias {
() => {};
(
$(#[$meta:meta])*
$vis:vis $name:ident = #[derive($($derives:tt)*)];
$($rest:tt)*
) => {
$crate::macro_derive_alias! {% [$(#[$meta])*] $vis $name () ($($derives)*) }
$crate::macro_derive_alias! { $($rest)* }
};
(
$(#[$meta:meta])*
$vis:vis $name:ident ($($params:tt)*) = #[derive($($derives:tt)*)];
$($rest:tt)*
) => {
$crate::macro_derive_alias! {% [$(#[$meta])*] $vis $name ($($params)*) ($($derives)*) }
$crate::macro_derive_alias! { $($rest)* }
};
(% [$($meta:tt)*] $vis:vis $name:ident () ($($derives:tt)*)) => {
$crate::macro_dollar! { ($d:tt) => { $crate::paste! {
#[allow(nonstandard_style)]
mod [<__mod_ $name __>] {
#[doc(hidden)]
#[allow(unused_macros)]
#[$crate::compile_attr(same($vis, pub), macro_export)]
macro_rules! [<__ $name __>] {
($d($item:tt)*) => {
$crate::__macro_nested_derive! { #[derive($($derives)*)] $d($item)* }
};
}
#[$crate::compile(none($vis))]
pub(super) use [<__$name __>] as $name;
#[$crate::compile(some($vis))]
$vis use [<__ $name __>] as $name;
}
$($meta)*
#[allow(unused_imports)]
#[doc = "\n\n---"]
#[doc = "*Generated with [`macro_derive_alias`][$crate::macro_derive_alias]*."]
$vis use [<__mod_ $name __>]::$name;
}}}
};
(% [$($meta:tt)*] $vis:vis $name:ident ($($params:tt)*) ($($derives:tt)*)) => {
$crate::macro_dollar! { ($d:tt) => { $crate::paste! {
#[allow(nonstandard_style)]
mod [<__mod_ $name __>] {
#[doc(hidden)]
#[allow(unused_macros)]
#[$crate::compile_attr(same($vis, pub), macro_export)]
macro_rules! [<__ $name __>] {
(($($params)*) $d($item:tt)*) => {
$crate::__macro_nested_derive! { #[derive($($derives)*)] $d($item)* }
};
}
#[$crate::compile(none($vis))]
pub(super) use [<__$name __>] as $name;
#[$crate::compile(some($vis))]
$vis use [<__ $name __>] as $name;
}
$($meta)*
#[allow(unused_imports)]
#[doc = "\n\n---"]
#[doc = "*Generated with [`macro_derive_alias`][$crate::macro_derive_alias]*."]
$vis use [<__mod_ $name __>]::$name;
}}}
};
}
#[doc(inline)]
pub use macro_derive_alias;
#[doc(hidden)]
#[macro_export]
macro_rules! __macro_nested_derive {
( #[derive($($derives:tt)*)] $($item:tt)* ) => {
#[$crate::macro_derive($($derives)*)]
#[$crate::macro_apply($crate::__macro_drop_item!)]
$($item)*
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __macro_drop_item {
($it:item) => {};
}