standing_relations/convenience/
output.rs

1use 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}