mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-25 00:00:18 +02:00
runtime: stabilize LocalRuntime (#7557)
This commit is contained in:
@@ -476,12 +476,7 @@ fn parse_knobs(mut input: ItemFn, is_test: bool, config: FinalConfig) -> TokenSt
|
||||
},
|
||||
};
|
||||
|
||||
let mut checks = vec![];
|
||||
let mut errors = vec![];
|
||||
|
||||
let build = if let RuntimeFlavor::Local = config.flavor {
|
||||
checks.push(quote! { tokio_unstable });
|
||||
errors.push("The local runtime flavor is only available when `tokio_unstable` is set.");
|
||||
quote_spanned! {last_stmt_start_span=> build_local(Default::default())}
|
||||
} else {
|
||||
quote_spanned! {last_stmt_start_span=> build()}
|
||||
@@ -509,23 +504,10 @@ fn parse_knobs(mut input: ItemFn, is_test: bool, config: FinalConfig) -> TokenSt
|
||||
quote! {}
|
||||
};
|
||||
|
||||
let do_checks: TokenStream = checks
|
||||
.iter()
|
||||
.zip(&errors)
|
||||
.map(|(check, error)| {
|
||||
quote! {
|
||||
#[cfg(not(#check))]
|
||||
compile_error!(#error);
|
||||
}
|
||||
})
|
||||
.collect();
|
||||
|
||||
let body_ident = quote! { body };
|
||||
// This explicit `return` is intentional. See tokio-rs/tokio#4636
|
||||
let last_block = quote_spanned! {last_stmt_end_span=>
|
||||
#do_checks
|
||||
|
||||
#[cfg(all(#(#checks),*))]
|
||||
#[allow(clippy::expect_used, clippy::diverging_sub_expression, clippy::needless_return, clippy::unwrap_in_result)]
|
||||
{
|
||||
#use_builder
|
||||
@@ -537,10 +519,6 @@ fn parse_knobs(mut input: ItemFn, is_test: bool, config: FinalConfig) -> TokenSt
|
||||
.block_on(#body_ident);
|
||||
}
|
||||
|
||||
#[cfg(not(all(#(#checks),*)))]
|
||||
{
|
||||
panic!("fell through checks")
|
||||
}
|
||||
};
|
||||
|
||||
let body = input.body();
|
||||
|
||||
@@ -73,16 +73,11 @@ use proc_macro::TokenStream;
|
||||
///
|
||||
/// ## Local
|
||||
///
|
||||
/// [Unstable API][unstable] only.
|
||||
///
|
||||
/// To use the [local runtime], the macro can be configured using
|
||||
///
|
||||
/// ```rust
|
||||
/// # #[cfg(tokio_unstable)]
|
||||
/// #[tokio::main(flavor = "local")]
|
||||
/// # async fn main() {}
|
||||
/// # #[cfg(not(tokio_unstable))]
|
||||
/// # fn main() {}
|
||||
/// ```
|
||||
///
|
||||
/// # Function arguments
|
||||
@@ -165,25 +160,19 @@ use proc_macro::TokenStream;
|
||||
///
|
||||
/// ## Using the local runtime
|
||||
///
|
||||
/// Available in the [unstable API][unstable] only.
|
||||
///
|
||||
/// The [local runtime] is similar to the current-thread runtime but
|
||||
/// supports [`task::spawn_local`](../tokio/task/fn.spawn_local.html).
|
||||
///
|
||||
/// ```rust
|
||||
/// # #[cfg(tokio_unstable)]
|
||||
/// #[tokio::main(flavor = "local")]
|
||||
/// async fn main() {
|
||||
/// println!("Hello world");
|
||||
/// }
|
||||
/// # #[cfg(not(tokio_unstable))]
|
||||
/// # fn main() {}
|
||||
/// ```
|
||||
///
|
||||
/// Equivalent code not using `#[tokio::main]`
|
||||
///
|
||||
/// ```rust
|
||||
/// # #[cfg(tokio_unstable)]
|
||||
/// fn main() {
|
||||
/// tokio::runtime::Builder::new_current_thread()
|
||||
/// .enable_all()
|
||||
@@ -193,8 +182,6 @@ use proc_macro::TokenStream;
|
||||
/// println!("Hello world");
|
||||
/// })
|
||||
/// }
|
||||
/// # #[cfg(not(tokio_unstable))]
|
||||
/// # fn main() {}
|
||||
/// ```
|
||||
///
|
||||
///
|
||||
|
||||
Reference in New Issue
Block a user