mirror of
https://github.com/TECHNOFAB11/aerosol.git
synced 2025-12-11 23:50:07 +01:00
53 lines
1.1 KiB
Rust
53 lines
1.1 KiB
Rust
#[doc(hidden)]
|
|
#[macro_export(local_inner_macros)]
|
|
macro_rules! join {
|
|
{
|
|
$caller:tt
|
|
sep = [{ $($sep:tt)* }]
|
|
} => {
|
|
$crate::tt_call::tt_return! {
|
|
$caller
|
|
joined = [{ }]
|
|
}
|
|
};
|
|
{
|
|
$caller:tt
|
|
sep = [{ $($sep:tt)* }]
|
|
item = [{ $($head:tt)* }]
|
|
$(
|
|
item = [{ $($tail:tt)* }]
|
|
)+
|
|
} => {
|
|
$crate::tt_call::tt_call! {
|
|
macro = [{ $crate::join }]
|
|
sep = [{ $($sep)* }]
|
|
$(
|
|
item = [{ $($tail)* }]
|
|
)+
|
|
~~> $crate::join! {
|
|
$caller
|
|
prepend = [{ $($head)* $($sep)* }]
|
|
}
|
|
}
|
|
};
|
|
{
|
|
$caller:tt
|
|
sep = [{ $($sep:tt)* }]
|
|
item = [{ $($head:tt)* }]
|
|
} => {
|
|
$crate::tt_call::tt_return! {
|
|
$caller
|
|
joined = [{ $($head)* }]
|
|
}
|
|
};
|
|
{
|
|
$caller:tt
|
|
prepend = [{ $($prepend:tt)* }]
|
|
joined = [{ $($joined:tt)* }]
|
|
} => {
|
|
$crate::tt_call::tt_return! {
|
|
$caller
|
|
joined = [{ $($prepend)* $($joined)* }]
|
|
}
|
|
};
|
|
}
|