use crate::transition::Strategy;
use routers_network::edge::Weight;
pub trait EmissionStrategy: for<'a> Strategy<EmissionContext<'a>> {}
impl<T> EmissionStrategy for T where T: for<'a> Strategy<EmissionContext<'a>> {}
#[derive(Clone, Copy, Debug)]
pub struct EmissionContext<'a> {
pub candidate_position: &'a geo::Point,
pub source_position: &'a geo::Point,
pub distance: f64,
pub weight: Weight,
}
impl<'a> EmissionContext<'a> {
pub fn new(
candidate: &'a geo::Point,
source: &'a geo::Point,
distance: f64,
weight: Weight,
) -> Self {
Self {
candidate_position: candidate,
source_position: source,
distance,
weight,
}
}
}