#![ cfg_attr( feature = "no_std", no_std ) ]
#![ doc( html_logo_url = "https://raw.githubusercontent.com/Wandalen/wTools/master/asset/img/logo_v3_trans_square.png" ) ]
#![ doc( html_favicon_url = "https://raw.githubusercontent.com/Wandalen/wTools/alpha/asset/img/logo_v3_trans_square_icon_small_v2.ico" ) ]
#![ doc( html_root_url = "https://docs.rs/for_each/latest/for_each/" ) ]
#![ doc = include_str!( concat!( env!( "CARGO_MANIFEST_DIR" ), "/", "Readme.md" ) ) ]
#[ cfg( feature = "enabled" ) ]
pub( crate ) mod private
{
#[ doc = include_str!( concat!( env!( "CARGO_MANIFEST_DIR" ), "/Readme.md" ) ) ]
#[ macro_export ]
macro_rules! for_each
{
(
$Callback : path, $( $Each : tt ),* $(,)?
) =>
{
$(
$crate::braces_unwrap!( $Callback, $Each );
)*
};
(
@Prefix $Prefix : tt
@Postfix $Postfix : tt
@Each $( $Each : tt )*
) =>
{
$crate::for_each!
{
$crate::identity where
@Prefix $Prefix
@Postfix $Postfix
@Each $( $Each )*
}
};
(
@Prefix $Prefix : tt
@Each $( $Each : tt )*
) =>
{
$crate::for_each!
{
$crate::identity where
@Prefix $Prefix
@Each $( $Each )*
}
};
(
@Postfix $Postfix : tt
@Each $( $Each : tt )*
) =>
{
$crate::for_each!
{
$crate::identity where
@Postfix $Postfix
@Each $( $Each )*
}
};
(
$Callback : path where
@Each $( $Each : tt )*
) =>
{
$(
$crate::braces_unwrap!( $Callback, $Each );
)*
};
(
$Callback : path
where
@Prefix $Prefix : tt
@Postfix $Postfix : tt
@Each $( $Each : tt )*
) =>
{
$(
$crate::braces_unwrap!
(
$Callback where
@Prefix{ $Prefix }
@Postfix{ $Postfix }
@SRC{ $Each }
);
)*
};
(
$Callback : path where
@Prefix $Prefix : tt
@Each $( $Each : tt )*
) =>
{
$(
$crate::braces_unwrap!
(
$Callback where
@Prefix{ $Prefix }
@SRC{ $Each }
);
)*
};
(
$Callback : path where
@Postfix $Postfix : tt
@Each $( $Each : tt )*
) =>
{
$(
$crate::braces_unwrap!
(
$Callback where
@Postfix{ $Postfix }
@SRC{ $Each }
);
)*
};
}
#[macro_export]
macro_rules! braces_unwrap
{
( $Callback : path, { $( $Src : tt )* } )
=>
{
$Callback!
(
$( $Src )*
);
};
( $Callback : path, $( $Src : tt )* )
=>
{
$Callback!
(
$( $Src )*
);
};
(
$Callback : path where
@SRC{ { $( $Src : tt )* } }
)
=>
{
$Callback!
(
$( $Src )*
);
};
(
$Callback : path where
@SRC{ $( $Src : tt )* }
)
=>
{
$Callback!
(
$( $Src )*
);
};
(
$Callback : path where
@Prefix{ { $( $Prefix : tt )* } }
@Postfix{ { $( $Postfix : tt )* } }
@SRC{ { $( $Src : tt )* } }
)
=>
{
$Callback!
(
$( $Prefix )* $( $Src )* $( $Postfix )*
);
};
(
$Callback : path where
@Prefix{ { $( $Prefix : tt )* } }
@Postfix{ { $( $Postfix : tt )* } }
@SRC{ $( $Src : tt )* }
)
=>
{
$Callback!
(
$( $Prefix )* $( $Src )* $( $Postfix )*
);
};
(
$Callback : path where
@Prefix{ { $( $Prefix : tt )* } }
@Postfix{ $( $Postfix : tt )* }
@SRC{ { $( $Src : tt )* } }
)
=>
{
$Callback!
(
$( $Prefix )* $( $Src )* $( $Postfix )*
);
};
(
$Callback : path where
@Prefix{ { $( $Prefix : tt )* } }
@Postfix{ $( $Postfix : tt )* }
@SRC{ $( $Src : tt )* }
)
=>
{
$Callback!
(
$( $Prefix )* $( $Src )* $( $Postfix )*
);
};
(
$Callback : path where
@Prefix{ $( $Prefix : tt )* }
@Postfix{ { $( $Postfix : tt )* } }
@SRC{ { $( $Src : tt )* } }
)
=>
{
$Callback!
(
$( $Prefix )* $( $Src )* $( $Postfix )*
);
};
(
$Callback : path where
@Prefix{ $( $Prefix : tt )* }
@Postfix{ { $( $Postfix : tt )* } }
@SRC{ $( $Src : tt )* }
)
=>
{
$Callback!
(
$( $Prefix )* $( $Src )* $( $Postfix )*
);
};
(
$Callback : path where
@Prefix{ $( $Prefix : tt )* }
@Postfix{ $( $Postfix : tt )* }
@SRC{ { $( $Src : tt )* } }
)
=>
{
$Callback!
(
$( $Prefix )* $( $Src )* $( $Postfix )*
);
};
(
$Callback : path where
@Prefix{ $( $Prefix : tt )* }
@Postfix{ $( $Postfix : tt )* }
@SRC{ $( $Src : tt )* }
)
=>
{
$Callback!
(
$( $Prefix )* $( $Src )* $( $Postfix )*
);
};
(
$Callback : path where
@Prefix{ { $( $Prefix : tt )* } }
@SRC{ { $( $Src : tt )* } }
)
=>
{
$Callback!
(
$( $Prefix )* $( $Src )*
);
};
(
$Callback : path where
@Prefix{ { $( $Prefix : tt )* } }
@SRC{ $( $Src : tt )* }
)
=>
{
$Callback!
(
$( $Prefix )* $( $Src )*
);
};
(
$Callback : path where
@Prefix{ $( $Prefix : tt )* }
@SRC{ { $( $Src : tt )* } }
)
=>
{
$Callback!
(
$( $Prefix )* $( $Src )*
);
};
(
$Callback : path where
@Prefix{ $( $Prefix : tt )* }
@SRC{ $( $Src : tt )* }
)
=>
{
$Callback!
(
$( $Prefix )* $( $Src )*
);
};
(
$Callback : path where
@Postfix{ { $( $Postfix : tt )* } }
@SRC{ { $( $Src : tt )* } }
)
=>
{
$Callback!
(
$( $Src )* $( $Postfix )*
);
};
(
$Callback : path where
@Postfix{ { $( $Postfix : tt )* } }
@SRC{ $( $Src : tt )* }
)
=>
{
$Callback!
(
$( $Src )* $( $Postfix )*
);
};
(
$Callback : path where
@Postfix{ $( $Postfix : tt )* }
@SRC{ { $( $Src : tt )* } }
)
=>
{
$Callback!
(
$( $Src )* $( $Postfix )*
);
};
(
$Callback : path where
@Postfix{ $( $Postfix : tt )* }
@SRC{ $( $Src : tt )* }
)
=>
{
$Callback!
(
$( $Src )* $( $Postfix )*
);
};
}
#[macro_export]
macro_rules! identity
{
(
$( $Src : tt )*
)
=>
{
$( $Src )*
};
}
pub use for_each;
pub use braces_unwrap;
pub use identity;
}
#[ cfg( feature = "enabled" ) ]
#[ doc( inline ) ]
#[ allow( unused_imports ) ]
pub use protected::*;
#[ cfg( feature = "enabled" ) ]
pub mod protected
{
#[ doc( inline ) ]
#[ allow( unused_imports ) ]
pub use super::orphan::*;
}
#[ cfg( feature = "enabled" ) ]
pub mod orphan
{
#[ doc( inline ) ]
#[ allow( unused_imports ) ]
pub use super::exposed::*;
}
#[ cfg( feature = "enabled" ) ]
pub mod exposed
{
#[ doc( inline ) ]
#[ allow( unused_imports ) ]
pub use super::prelude::*;
}
#[ cfg( feature = "enabled" ) ]
pub mod prelude
{
#[ doc( inline ) ]
#[ allow( unused_imports ) ]
pub use super::private::for_each;
#[ doc( inline ) ]
#[ allow( unused_imports ) ]
pub use super::private::braces_unwrap;
#[ doc( inline ) ]
#[ allow( unused_imports ) ]
pub use super::private::identity;
}