statsig-rust 0.19.1-beta.2604130314

Statsig Rust SDK for usage in multi-user server environments.
Documentation
pub use net_provider_global::NetworkProviderGlobal;

use super::NetworkProvider;
use net_provider_noop::NetworkProviderNoop;
use std::sync::{Arc, Weak};

#[cfg(not(feature = "custom_network_provider"))]
pub mod net_provider_reqwest;

mod net_provider_global;
mod net_provider_noop;

lazy_static::lazy_static! {
    static ref NOOP_NETWORK_PROVIDER: Arc<dyn NetworkProvider> = Arc::new(NetworkProviderNoop {});
}

#[cfg(not(feature = "custom_network_provider"))]
lazy_static::lazy_static! {
    static ref REQWEST_NETWORK_PROVIDER: Arc<dyn NetworkProvider> = Arc::new(net_provider_reqwest::NetworkProviderReqwest::new());
}

#[cfg(feature = "custom_network_provider")]
pub fn get_network_provider() -> Weak<dyn NetworkProvider> {
    NetworkProviderGlobal::try_get().unwrap_or_else(|| Arc::downgrade(&NOOP_NETWORK_PROVIDER))
}

#[cfg(not(feature = "custom_network_provider"))]
pub fn get_network_provider() -> Weak<dyn NetworkProvider> {
    Arc::downgrade(&REQWEST_NETWORK_PROVIDER)
}