bambam 0.3.1

The Behavior and Advanced Mobility Big Access Model
Documentation
use crate::model::constraint::time_limit::{TimeLimit, TimeLimitConstraintConfig};

use super::service::TimeLimitConstraintService;
use routee_compass_core::model::{
    constraint::{ConstraintModelBuilder, ConstraintModelError, ConstraintModelService},
    unit::TimeUnit,
};
use std::sync::Arc;

pub struct TimeLimitConstraintBuilder {}

impl ConstraintModelBuilder for TimeLimitConstraintBuilder {
    fn build(
        &self,
        config: &serde_json::Value,
    ) -> Result<Arc<dyn ConstraintModelService>, ConstraintModelError> {
        let conf: TimeLimitConstraintConfig =
            serde_json::from_value(config.clone()).map_err(|e| {
                ConstraintModelError::BuildError(format!(
                    "failure reading isochrone frontier model configuration: {e}"
                ))
            })?;
        let model = TimeLimitConstraintService::new(&conf);
        Ok(Arc::new(model))
    }
}