|
|
|
@ -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())
|
|
|
|
|
}
|