diff options
Diffstat (limited to 'tokio-macros')
-rw-r--r-- | tokio-macros/src/lib.rs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/tokio-macros/src/lib.rs b/tokio-macros/src/lib.rs index 9a33c5fd..d8eedb02 100644 --- a/tokio-macros/src/lib.rs +++ b/tokio-macros/src/lib.rs @@ -49,6 +49,7 @@ pub fn main(args: TokenStream, item: TokenStream) -> TokenStream { enum RuntimeType { Single, Multi, + Auto, } let input = syn::parse_macro_input!(item as syn::ItemFn); @@ -71,7 +72,7 @@ pub fn main(args: TokenStream, item: TokenStream) -> TokenStream { .into(); } - let mut runtime = RuntimeType::Multi; + let mut runtime = RuntimeType::Auto; for arg in args { if let syn::NestedMeta::Meta(syn::Meta::Path(path)) = arg { @@ -106,6 +107,13 @@ pub fn main(args: TokenStream, item: TokenStream) -> TokenStream { rt.block_on(async { #body }) } }, + RuntimeType::Auto => quote! { + #(#attrs)* + fn #name() #ret { + let mut rt = tokio::runtime::__main::Runtime::new().unwrap(); + rt.block_on(async { #body }) + } + }, }; result.into() |