1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use crate::graph::{Config, Graph, Value};
pub trait LinkedAlgebra<SourceValue, TargetValue> {
fn link<'a>(&mut self, value: &'a SourceValue) -> &'a TargetValue;
}
impl<D, A> LinkedAlgebra<Value<D>, D> for A
where
A: crate::core::CoreAlgebra<D, Value = D>,
{
#[inline]
fn link<'a>(&mut self, value: &'a Value<D>) -> &'a D {
value.data()
}
}
impl<V, C: Config> LinkedAlgebra<V, V> for Graph<C> {
#[inline]
fn link<'a>(&mut self, value: &'a V) -> &'a V {
value
}
}