routee-compass-core 0.7.0

The core routing algorithms and data structures of the RouteE-Compass energy-aware routing engine
Documentation
use std::sync::Arc;

use crate::model::access::{
    access_model::AccessModel, access_model_builder::AccessModelBuilder,
    access_model_service::AccessModelService,
};

#[derive(Clone, Debug)]
pub struct NoAccessModel {}

impl AccessModel for NoAccessModel {
    fn state_features(&self) -> Vec<(String, crate::model::state::state_feature::StateFeature)> {
        vec![]
    }

    fn access_edge(
        &self,
        _traversal: (
            &crate::model::property::vertex::Vertex,
            &crate::model::property::edge::Edge,
            &crate::model::property::vertex::Vertex,
            &crate::model::property::edge::Edge,
            &crate::model::property::vertex::Vertex,
        ),
        _state: &mut Vec<crate::model::traversal::state::state_variable::StateVar>,
        _state_model: &crate::model::state::state_model::StateModel,
    ) -> Result<(), crate::model::access::access_model_error::AccessModelError> {
        Ok(())
    }
}

impl AccessModelService for NoAccessModel {
    fn build(
        &self,
        _query: &serde_json::Value,
    ) -> Result<
        std::sync::Arc<dyn AccessModel>,
        crate::model::access::access_model_error::AccessModelError,
    > {
        let model: Arc<dyn AccessModel> = Arc::new(self.clone());
        Ok(model)
    }
}

impl AccessModelBuilder for NoAccessModel {
    fn build(
        &self,
        _parameters: &serde_json::Value,
    ) -> Result<
        Arc<dyn AccessModelService>,
        crate::model::access::access_model_error::AccessModelError,
    > {
        let service: Arc<dyn AccessModelService> = Arc::new(self.clone());
        Ok(service)
    }
}