#[doc = crate::_tags!(code)]
#[doc = crate::_doc_meta!{location("code/util")}]
#[macro_export]
#[cfg_attr(cargo_primary_package, doc(hidden))]
macro_rules! use_as {
($( +$prefix:ident: $vis:vis $($path:ident)::+::{ $($items:tt)* } ),+ $(,)?) => {
$( $crate::use_as![%[$prefix] [$vis] [$($path)::+] [] $($items)*]; )+
};
(%[$pre:ident] [$v:vis] [$($p:ident)::+] [$($i:tt)*]) => {
$crate::paste! { $v use $($p)::+::{ $($i)* }; }
};
(%[$pre:ident] [$v:vis] [$($p:ident)::+] [$($i:tt)*] _, $($t:tt)*) => {
$crate::use_as![%[$pre] [$v] [$($p)::+] [$($i)* $pre,] $($t)*];
};
(%[$pre:ident] [$v:vis] [$($p:ident)::+] [$($i:tt)*] _) => {
$crate::use_as![%[$pre] [$v] [$($p)::+] [$($i)* $pre,]];
};
(%[$pre:ident] [$v:vis] [$($p:ident)::+] [$($i:tt)*] _ as $a:ident, $($t:tt)*) => {
$crate::use_as![%[$pre] [$v] [$($p)::+] [$($i)* $pre as $a,] $($t)*];
};
(%[$pre:ident] [$v:vis] [$($p:ident)::+] [$($i:tt)*] _ as $a:ident) => {
$crate::use_as![%[$pre] [$v] [$($p)::+] [$($i)* $pre as $a,]];
};
(%[$pre:ident] [$v:vis] [$($p:ident)::+] [$($i:tt)*] $n:ident as $a:ident, $($t:tt)*) => {
$crate::use_as![%[$pre] [$v] [$($p)::+] [$($i)* [<$pre $n>] as $a,] $($t)*];
};
(%[$pre:ident] [$v:vis] [$($p:ident)::+] [$($i:tt)*] $n:ident as $a:ident) => {
$crate::use_as![%[$pre] [$v] [$($p)::+] [$($i)* [<$pre $n>] as $a,]];
};
(%[$pre:ident] [$v:vis] [$($p:ident)::+] [$($i:tt)*] $n:ident, $($t:tt)*) => {
$crate::use_as![%[$pre] [$v] [$($p)::+] [$($i)* [<$pre $n>] as $n,] $($t)*];
};
(%[$pre:ident] [$v:vis] [$($p:ident)::+] [$($i:tt)*] $n:ident) => {
$crate::use_as![%[$pre] [$v] [$($p)::+] [$($i)* [<$pre $n>] as $n,]];
};
}
#[doc(inline)]
pub use use_as;