logo
macro_rules! task_local {
    () => { ... };
    ($(#[$attr:meta])* $vis:vis static $name:ident: $t:ty = $init:expr) => { ... };
    ($(#[$attr:meta])* $vis:vis static $name:ident: $t:ty = $init:expr; $($rest:tt)*) => { ... };
}
Expand description

Declares task-local values.

The macro wraps any number of static declarations and makes them task-local. Attributes and visibility modifiers are allowed.

Each declared value is of the accessor type LocalKey.

Examples

use std::cell::Cell;

use async_std::prelude::*;
use async_std::task;

task_local! {
    static VAL: Cell<u32> = Cell::new(5);
}

task::block_on(async {
    let v = VAL.with(|c| c.get());
    assert_eq!(v, 5);
});