From 5714eba48ee9031d61858425583c219b881f2d13 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Sun, 26 Jul 2026 20:56:24 +0800 Subject: feat(macros): split monolith into one-macro-per-file modules --- mingling_macros/src/func/route.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 mingling_macros/src/func/route.rs (limited to 'mingling_macros/src/func/route.rs') diff --git a/mingling_macros/src/func/route.rs b/mingling_macros/src/func/route.rs new file mode 100644 index 0000000..b338fb0 --- /dev/null +++ b/mingling_macros/src/func/route.rs @@ -0,0 +1,16 @@ +use proc_macro::TokenStream; +use quote::quote; +use syn::parse_macro_input; + +/// Routes execution depending on a condition — early-returns the error from a `Result`, +/// converting the `Ok` branch to the next chain process value. +pub(crate) fn route(input: TokenStream) -> TokenStream { + let expr = parse_macro_input!(input as syn::Expr); + let expanded = quote! { + match #expr { + Ok(r) => r, + Err(e) => return ::mingling::Routable::to_chain(e), + } + }; + TokenStream::from(expanded) +} -- cgit