diff --git a/packages/traits/src/net.rs b/packages/traits/src/net.rs index abddfddc..fc0239f4 100644 --- a/packages/traits/src/net.rs +++ b/packages/traits/src/net.rs @@ -1,20 +1,17 @@ pub use bytes::Bytes; pub use http::Method; use std::marker::PhantomData; -use std::ops::DerefMut; -use std::sync::{Arc, LazyLock, RwLock}; +use std::sync::{Arc, OnceLock}; pub use url::Url; -static GLOBAL_PROVIDER: LazyLock>> = - LazyLock::new(|| RwLock::new(Box::new(DummyProvider))); +static GLOBAL_PROVIDER: OnceLock> = OnceLock::new(); pub fn fetch(url: Url, handler: H) { GLOBAL_PROVIDER - .read() - .unwrap() + .get_or_init(|| Box::new(DummyProvider)) .fetch(url, Box::new(handler)) } pub fn set_provider(provider: P) { - *GLOBAL_PROVIDER.write().unwrap().deref_mut() = Box::new(provider); + let _ = GLOBAL_PROVIDER.set(Box::new(provider)); } pub type BoxedHandler = Box;