flams_system/backend.rs
1use flams_math_archives::{
2 backend::{AnyBackend, GlobalBackend, TemporaryBackend},
3 utils::AsyncEngine,
4};
5
6static MAIN_BACKEND: std::sync::OnceLock<AnyBackend> = std::sync::OnceLock::new();
7pub fn backend() -> &'static AnyBackend {
8 MAIN_BACKEND.get_or_init(|| AnyBackend::Global)
9}
10
11pub fn initialize<A: AsyncEngine>() {
12 let settings = crate::settings::Settings::get();
13 if settings.lsp {
14 MAIN_BACKEND.get_or_init(|| AnyBackend::Temp(TemporaryBackend::new(AnyBackend::Global)));
15 }
16 GlobalBackend.load(settings.mathhubs());
17 A::background(|| {
18 GlobalBackend
19 .triple_store()
20 .load_archives(&GlobalBackend.all_archives());
21 });
22}