]> Repositorios git - scryer-prolog.git/commitdiff
add a features for gating things we can use once 1.80 is msrv
authorBennet Bleßmann <[email protected]>
Thu, 25 Jul 2024 21:09:17 +0000 (23:09 +0200)
committerBennet Bleßmann <[email protected]>
Thu, 25 Jul 2024 21:09:17 +0000 (23:09 +0200)
Cargo.toml
src/machine/mod.rs

index 67c3e60db8699389ae85b572f230316f401f99a3..180015ed7daa80023bc219027309ecc21887b91f 100644 (file)
@@ -23,6 +23,7 @@ hostname = ["dep:hostname"]
 tls = ["dep:native-tls"]
 http = ["dep:warp", "dep:reqwest"]
 crypto-full = []
+"rust-version-1.80" = []
 
 [build-dependencies]
 indexmap = "1.0.2"
index 1726ae5b333d406b59b23da67e9320ffc534ed37..9110ae9c8c2018775c4c2282ab505fa01e7eb4b4 100644 (file)
@@ -118,6 +118,7 @@ fn current_dir() -> PathBuf {
     }
 }
 
+#[cfg(not(feature = "rust-version-1.80"))]
 mod libraries {
     use indexmap::IndexMap;
     use std::sync::OnceLock;
@@ -142,6 +143,28 @@ mod libraries {
     }
 }
 
+#[cfg(feature = "rust-version-1.80")]
+mod libraries {
+    use indexmap::IndexMap;
+    use std::sync::LazyLock;
+
+    static LIBRARIES: LazyLock<IndexMap<&'static str, &'static str>> = OnceLock::new(|| {
+        let mut m = IndexMap::new();
+
+        include!(concat!(env!("OUT_DIR"), "/libraries.rs"));
+
+        m
+    });
+
+    pub(crate) fn contains(name: &str) -> bool {
+        LIBRARIES.contains_key(name)
+    }
+
+    pub(crate) fn get(name: &str) -> Option<&'static str> {
+        LIBRARIES.get(name).copied()
+    }
+}
+
 pub static BREAK_FROM_DISPATCH_LOOP_LOC: usize = 0;
 pub static INSTALL_VERIFY_ATTR_INTERRUPT: usize = 1;
 pub static VERIFY_ATTR_INTERRUPT_LOC: usize = 2;