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
31
32
33
34
35
36
37
38
39
40
41
use std::{collections::HashMap, hash::Hash};
use crate::{
core::{CreationContext, Op, Output, Relation},
Dynamic, Save,
};
use super::map::{ExtremaMap, KVMap};
pub type DynamicOutput<'a, D, M = HashMap<D, isize>> = Output<D, Dynamic<'a, (D, isize)>, M>;
pub type CollectionOutput<'a, D, M = HashMap<D, isize>> =
Output<D, Save<Dynamic<'a, (D, isize)>>, M>;
impl<C: Op> Relation<C> {
pub fn into_output(self, context: &CreationContext) -> Output<C::D, C>
where
C::D: Eq + Hash,
{
self.into_output_(context)
}
}
impl<K, V, C: Op<D = (K, V)>> Relation<C> {
pub fn into_kv_output(self, context: &CreationContext) -> Output<(K, V), C, KVMap<K, V>>
where
K: Eq + Hash,
V: Eq + Hash,
{
self.into_output_(context)
}
pub fn into_extrema_output(
self,
context: &CreationContext,
) -> Output<(K, V), C, ExtremaMap<K, V>>
where
K: Ord,
V: Eq + Hash,
{
self.into_output_(context)
}
}