diff options
author | Carl Lerche <me@carllerche.com> | 2019-11-01 13:18:52 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-01 13:18:52 -0700 |
commit | d70c928d88dff9e3e8d673b8ee02bce131598550 (patch) | |
tree | 6b079db2f80bd61764203a32ffe48769d18c1386 /tokio-macros | |
parent | 742d89b0f333150f6a550ae7840235851f4eb069 (diff) |
runtime: merge multi & single threaded runtimes (#1716)
Simplify Tokio's runtime construct by combining both Runtime variants
into a single type. The execution style can be controlled by a
configuration setting on `Builder`.
The implication of this change is that there is no longer any way to
spawn `!Send` futures. This, however, is a temporary limitation. A
different strategy will be employed for supporting `!Send` futures.
Included in this patch is a rework of `task::JoinHandle` to support
using this type from both the thread-pool and current-thread executors.
Diffstat (limited to 'tokio-macros')
-rw-r--r-- | tokio-macros/src/lib.rs | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/tokio-macros/src/lib.rs b/tokio-macros/src/lib.rs index 00c0cc34..1cfc14c3 100644 --- a/tokio-macros/src/lib.rs +++ b/tokio-macros/src/lib.rs @@ -98,7 +98,7 @@ pub fn main(args: TokenStream, item: TokenStream) -> TokenStream { } let result = match runtime { - RuntimeType::Multi => quote! { + RuntimeType::Multi | RuntimeType::Auto => quote! { #(#attrs)* fn #name(#inputs) #ret { tokio::runtime::Runtime::new().unwrap().block_on(async { #body }) @@ -107,14 +107,11 @@ pub fn main(args: TokenStream, item: TokenStream) -> TokenStream { RuntimeType::Single => quote! { #(#attrs)* fn #name(#inputs) #ret { - tokio::runtime::current_thread::Runtime::new().unwrap().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 }) + tokio::runtime::Builder::new() + .current_thread() + .build() + .unwrap() + .block_on(async { #body }) } }, }; @@ -211,7 +208,11 @@ pub fn test(args: TokenStream, item: TokenStream) -> TokenStream { #[test] #(#attrs)* fn #name() #ret { - tokio::runtime::current_thread::Runtime::new().unwrap().block_on(async { #body }) + tokio::runtime::Builder::new() + .current_thread() + .build() + .unwrap() + .block_on(async { #body }) } }, }; |