From 54e5f12ac66a898fb76ad2be4cd15853a7dcde24 Mon Sep 17 00:00:00 2001 From: Linwei Shang Date: Fri, 15 Dec 2023 13:29:09 -0500 Subject: [PATCH] can't await in thread_local --- async_state/src/lib.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/async_state/src/lib.rs b/async_state/src/lib.rs index 9fefceb..8a56432 100644 --- a/async_state/src/lib.rs +++ b/async_state/src/lib.rs @@ -10,7 +10,7 @@ trait Counter { fn __canister_method_inc() { ic_cdk::setup(); ic_cdk::spawn(async { - let _result = CANISTER.lock().unwrap().inc().await; + let _result = CANISTER.with(|c| c.borrow_mut().inc().await); ic_cdk::api::call::reply(()) }); } @@ -19,15 +19,14 @@ fn __canister_method_inc() { fn __canister_method_read() { ic_cdk::setup(); ic_cdk::spawn(async { - let result = CANISTER.lock().unwrap().read(); + let result = CANISTER.with(|c| c.borrow().read()); ic_cdk::api::call::reply((result,)) }); } -use once_cell::sync::Lazy; -use std::sync::Mutex; -static CANISTER: Lazy> = Lazy::new(|| Mutex::new(Default::default())); - +thread_local! { + static CANISTER: ::std::cell::RefCell = ::std::cell::RefCell::new(Canister::default()); +} // Expand End #[derive(Default)]