summaryrefslogtreecommitdiffstats
path: root/tokio-macros
diff options
context:
space:
mode:
authorCarl Lerche <me@carllerche.com>2019-11-01 13:18:52 -0700
committerGitHub <noreply@github.com>2019-11-01 13:18:52 -0700
commitd70c928d88dff9e3e8d673b8ee02bce131598550 (patch)
tree6b079db2f80bd61764203a32ffe48769d18c1386 /tokio-macros
parent742d89b0f333150f6a550ae7840235851f4eb069 (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.rs21
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 })
}
},
};