add task::try_current

pull/951/head
Martin Glagla 4 years ago
parent 4d9499c277
commit 7fecd0d710

@ -23,6 +23,26 @@ use crate::task::{Task, TaskLocalsWrapper};
/// # })
/// ```
pub fn current() -> Task {
TaskLocalsWrapper::get_current(|t| t.task().clone())
.expect("`task::current()` called outside the context of a 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())
}

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

Loading…
Cancel
Save