use crate::{Builder, CommonAlreadyInitializedError, ThreadPool};
use once_cell::sync::OnceCell;
static COMMON: OnceCell<ThreadPool> = OnceCell::new();
pub fn common() -> &'static ThreadPool {
COMMON.get_or_init(|| common_builder().build())
}
pub fn configure_common<F>(f: F) -> Result<(), CommonAlreadyInitializedError>
where
F: FnOnce(Builder) -> Builder,
{
let mut was_initialized = true;
COMMON.get_or_init(|| {
was_initialized = false;
f(common_builder()).build()
});
if was_initialized {
Err(CommonAlreadyInitializedError::new())
} else {
Ok(())
}
}
fn common_builder() -> Builder {
Builder::default().name("common-pool")
}