Merge pull request #951 from mglagla/try-current

add task::try_current
pull/957/head
Yoshua Wuyts 4 years ago committed by GitHub
commit d395607761
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -23,6 +23,26 @@ use crate::task::{Task, TaskLocalsWrapper};
/// # }) /// # })
/// ``` /// ```
pub fn current() -> Task { pub fn current() -> Task {
try_current().expect("`task::current()` called outside the context of a task")
}
/// Returns a handle to the current task if called within the context of a task created by [`block_on`],
/// [`spawn`], or [`Builder::spawn`], otherwise returns `None`.
///
/// [`block_on`]: fn.block_on.html
/// [`spawn`]: fn.spawn.html
/// [`Builder::spawn`]: struct.Builder.html#method.spawn
///
/// # Examples
///
/// ```
/// use async_std::task;
///
/// match task::try_current() {
/// Some(t) => println!("The name of this task is {:?}", t.name()),
/// None => println!("Not inside a task!"),
/// }
/// ```
pub fn try_current() -> Option<Task> {
TaskLocalsWrapper::get_current(|t| t.task().clone()) TaskLocalsWrapper::get_current(|t| t.task().clone())
.expect("`task::current()` called outside the context of a task")
} }

@ -133,7 +133,7 @@ cfg_std! {
cfg_default! { cfg_default! {
pub use block_on::block_on; pub use block_on::block_on;
pub use builder::Builder; pub use builder::Builder;
pub use current::current; pub use current::{current, try_current};
pub use task::Task; pub use task::Task;
pub use task_id::TaskId; pub use task_id::TaskId;
pub use join_handle::JoinHandle; pub use join_handle::JoinHandle;

Loading…
Cancel
Save