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>(rdf: bool) {
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    if rdf {
18        A::background(|| {
19            GlobalBackend
20                .triple_store()
21                .load_archives(&GlobalBackend.all_archives());
22        });
23    }
24}