Skip to main content

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}