1 tokio::task_local! {
2     static REQ_ID: u32;
3     pub static FOO: bool;
4 }
5 
6 #[tokio::test(flavor = "multi_thread")]
local()7 async fn local() {
8     let j1 = tokio::spawn(REQ_ID.scope(1, async move {
9         assert_eq!(REQ_ID.get(), 1);
10         assert_eq!(REQ_ID.get(), 1);
11     }));
12 
13     let j2 = tokio::spawn(REQ_ID.scope(2, async move {
14         REQ_ID.with(|v| {
15             assert_eq!(REQ_ID.get(), 2);
16             assert_eq!(*v, 2);
17         });
18 
19         tokio::time::sleep(std::time::Duration::from_millis(10)).await;
20 
21         assert_eq!(REQ_ID.get(), 2);
22     }));
23 
24     let j3 = tokio::spawn(FOO.scope(true, async move {
25         assert!(FOO.get());
26     }));
27 
28     j1.await.unwrap();
29     j2.await.unwrap();
30     j3.await.unwrap();
31 }
32