use oar_ocr_core::core::OCRError;
use oar_ocr_core::core::config::OrtSessionConfig;
use oar_ocr_core::core::traits::OrtConfigurable;
use oar_ocr_core::core::traits::adapter::AdapterBuilder;
use std::path::PathBuf;
pub fn build_optional_adapter<B>(
model_path: Option<&PathBuf>,
ort_config: Option<&OrtSessionConfig>,
create_builder: impl FnOnce() -> B,
) -> Result<Option<B::Adapter>, OCRError>
where
B: AdapterBuilder + OrtConfigurable,
{
let Some(model) = model_path else {
return Ok(None);
};
let mut builder = create_builder();
if let Some(config) = ort_config {
builder = builder.with_ort_config(config.clone());
}
Ok(Some(builder.build(model)?))
}