# tokio-inherit-task-local Provides functionality very similar to [`tokio::task_local`](https://docs.rs/tokio/latest/tokio/macro.task_local.html) with one key difference. Any future annotated with `.inherit_task_local()` will inherit the task local values of the task which spawned it. This does not inherit values created by [`tokio::task_local`](https://docs.rs/tokio/latest/tokio/macro.task_local.html), it will only inherit values created by `inheritable_task_local`. Here's a simple example ```rust use tokio_inherit_task_local::{inheritable_task_local, FutureInheritTaskLocal as _}; inheritable_task_local! { pub static DEMO_VALUE: u32; } async fn foo() { let out = DEMO_VALUE .scope(5, async { tokio::spawn(async { DEMO_VALUE.with(|&v| v) }.inherit_task_local()).await }) .await .unwrap(); assert_eq!(out, 5); } ``` Even though `DEMO_VALUE` was not defined for the spawned future, it was still able to inherit the value defined in its parent. This happens thanks to the `.inherit_task_local()` method call. That method can be found in `FutureInheritTaskLocal`. These inherited values ***DO NOT*** need to be `Clone`. Child tasks will inherit counted references to the original value.