use routers_network::{Edge, Entry, Metadata, Network};
use crate::candidate::{Candidate, CandidateId, Candidates};
#[derive(Clone, Copy, Debug)]
pub struct RoutingContext<'a, E, M, N>
where
E: Entry + 'a,
M: Metadata + 'a,
N: Network<E, M>,
{
pub candidates: &'a Candidates<E>,
pub map: &'a N,
pub runtime: &'a M::Runtime,
}
impl<N, E, M> RoutingContext<'_, E, M, N>
where
E: Entry,
M: Metadata,
N: Network<E, M>,
{
pub fn candidate(&self, candidate: &CandidateId) -> Option<Candidate<E>> {
self.candidates.candidate(candidate)
}
pub fn edge(&self, a: &E, b: &E) -> Option<Edge<E>> {
self.map.edge(a, b)
}
}