#![allow(non_camel_case_types, non_snake_case, non_upper_case_globals)]
pub const BUILD_INFO: &str = include_str!(concat!(env!("OUT_DIR"), "/build-info.txt"));
#[cfg(feature = "dlmdb")]
mod bindings {
#![allow(clippy::all, clippy::undocumented_unsafe_blocks)]
include!(concat!(env!("OUT_DIR"), "/bindings-dlmdb.rs"));
}
#[cfg(feature = "dlmdb")]
pub use bindings::*;
#[cfg(any(feature = "usearch", feature = "llama"))]
pub mod runtime;
#[cfg(feature = "usearch")]
pub mod usearch {
use std::sync::OnceLock;
mod bindings {
#![allow(clippy::all, clippy::undocumented_unsafe_blocks)]
include!(concat!(env!("OUT_DIR"), "/bindings-usearch.rs"));
}
pub use bindings::*;
static API: OnceLock<Result<UsearchApi, String>> = OnceLock::new();
pub fn api() -> Result<&'static UsearchApi, &'static str> {
API.get_or_init(|| {
let library = super::runtime::load(env!("DTLVNATIVE_USEARCH_LIBRARY"))?;
unsafe { UsearchApi::from_library(library).map_err(|error| error.to_string()) }
})
.as_ref()
.map_err(String::as_str)
}
}
#[cfg(feature = "llama")]
pub mod llama {
use std::sync::OnceLock;
mod bindings {
#![allow(clippy::all, clippy::undocumented_unsafe_blocks)]
include!(concat!(env!("OUT_DIR"), "/bindings-llama.rs"));
}
pub use bindings::*;
static API: OnceLock<Result<LlamaApi, String>> = OnceLock::new();
pub fn api() -> Result<&'static LlamaApi, &'static str> {
API.get_or_init(|| {
let library = super::runtime::load(env!("DTLVNATIVE_LLAMA_LIBRARY"))?;
unsafe { LlamaApi::from_library(library).map_err(|error| error.to_string()) }
})
.as_ref()
.map_err(String::as_str)
}
}