use crate::core::config::OrtSessionConfig;
#[derive(Debug, Clone)]
pub struct PredictorBuilderState<C> {
config: C,
ort_config: Option<OrtSessionConfig>,
}
impl<C> PredictorBuilderState<C> {
pub fn new(config: C) -> Self {
Self {
config,
ort_config: None,
}
}
pub fn config_mut(&mut self) -> &mut C {
&mut self.config
}
pub fn set_config(&mut self, config: C) {
self.config = config;
}
pub fn set_ort_config(&mut self, config: OrtSessionConfig) {
self.ort_config = Some(config);
}
pub fn into_parts(self) -> (C, Option<OrtSessionConfig>) {
(self.config, self.ort_config)
}
}
pub trait TaskPredictorBuilder: Sized {
type Config: Clone;
fn state_mut(&mut self) -> &mut PredictorBuilderState<Self::Config>;
fn with_config(mut self, config: Self::Config) -> Self {
self.state_mut().set_config(config);
self
}
fn with_ort_config(mut self, config: OrtSessionConfig) -> Self {
self.state_mut().set_ort_config(config);
self
}
}