standing_relations/convenience/
output.rs1use std::{collections::HashMap, hash::Hash};
2
3use crate::{
4 core::{CreationContext, Op, Output, Relation},
5 Dynamic, Save,
6};
7
8use super::map::{ExtremaMap, KVMap};
9
10pub type DynamicOutput<'a, D, M = HashMap<D, isize>> = Output<D, Dynamic<'a, (D, isize)>, M>;
11pub type CollectionOutput<'a, D, M = HashMap<D, isize>> =
12 Output<D, Save<Dynamic<'a, (D, isize)>>, M>;
13
14impl<C: Op> Relation<C> {
15 pub fn into_output(self, context: &CreationContext) -> Output<C::D, C>
16 where
17 C::D: Eq + Hash,
18 {
19 self.into_output_(context)
20 }
21}
22
23impl<K, V, C: Op<D = (K, V)>> Relation<C> {
24 pub fn into_kv_output(self, context: &CreationContext) -> Output<(K, V), C, KVMap<K, V>>
25 where
26 K: Eq + Hash,
27 V: Eq + Hash,
28 {
29 self.into_output_(context)
30 }
31 pub fn into_extrema_output(
32 self,
33 context: &CreationContext,
34 ) -> Output<(K, V), C, ExtremaMap<K, V>>
35 where
36 K: Ord,
37 V: Eq + Hash,
38 {
39 self.into_output_(context)
40 }
41}