#[macro_export]
macro_rules! handle {
(require $($rest:tt)+) => {
$crate::handle_this_macros::__handle_proc!(REQUIRE $($rest)+)
};
(scope $($rest:tt)+) => {
$crate::handle_this_macros::__handle_proc!(SCOPE $($rest)+)
};
(try when $($rest:tt)+) => {
$crate::handle_this_macros::__handle_proc!(WHEN $($rest)+)
};
(async try { $($body:tt)* } , then $($rest:tt)+) => {
$crate::handle_this_macros::__handle_proc!(THEN ASYNC { $($body)* } , then $($rest)+)
};
(async try { $($body:tt)* } $($rest:tt)+) => {
$crate::handle_this_macros::__handle_proc!(ASYNC { $($body)* } $($rest)+)
};
(async try { $($body:tt)* }) => {
$crate::handle_this_macros::__handle_proc!(ASYNC { $($body)* })
};
(try { $($body:tt)* } , then $($rest:tt)+) => {
$crate::handle_this_macros::__handle_proc!(THEN BASIC { $($body)* } , then $($rest)+)
};
(try { $($body:tt)* } with $($with_and_rest:tt)+) => {
$crate::handle_this_macros::__then_or_sync!(BASIC { $($body)* } with $($with_and_rest)+)
};
(try -> $type:ty { $($body:tt)* } , then $($rest:tt)+) => {
$crate::handle_this_macros::__handle_proc!(THEN DIRECT -> $type { $($body)* } , then $($rest)+)
};
(try for $($all:tt)+) => {
$crate::handle_this_macros::__then_or_iter!(FOR $($all)+)
};
(try any $($all:tt)+) => {
$crate::handle_this_macros::__then_or_iter!(ANY $($all)+)
};
(try all $($all:tt)+) => {
$crate::handle_this_macros::__then_or_iter!(ALL $($all)+)
};
(try while $($all:tt)+) => {
$crate::handle_this_macros::__then_or_iter!(WHILE $($all)+)
};
(try -> $type:ty { $($body:tt)* } $($rest:tt)+) => {
$crate::handle_this_macros::__handle_proc!(SYNC -> $type { $($body)* } $($rest)+)
};
(try -> $type:ty { $($body:tt)* }) => {
$crate::handle_this_macros::__handle_proc!(SYNC -> $type { $($body)* })
};
(try { $($body:tt)* } $($rest:tt)+) => {
$crate::handle_this_macros::__handle_proc!(SYNC { $($body)* } $($rest)+)
};
(try { $($body:tt)* }) => {
$crate::handle_this_macros::__handle_proc!(SYNC { $($body)* })
};
($first:tt $($rest:tt)*) => {
$crate::handle_this_macros::__handle_proc!(ERROR $first $($rest)*)
};
() => {
$crate::handle_this_macros::__handle_proc!(ERROR_EMPTY)
};
}