Skip to main content

graphrecords_query/traits/
grouping.rs

1use crate::IndexDomain;
2
3pub trait GroupBy<K> {
4    type ReturnOperand;
5
6    fn group_by(&self, key: K) -> Self::ReturnOperand;
7}
8
9pub trait Having<P> {
10    type ReturnOperand;
11
12    fn having(&self, predicate: P) -> Self::ReturnOperand;
13}
14
15pub trait Broadcast {
16    type ReturnOperand;
17
18    fn broadcast(&self) -> Self::ReturnOperand;
19}
20
21pub trait BroadcastVia<I: IndexDomain, A> {
22    type ReturnOperand;
23
24    fn broadcast_via(&self, via: A) -> Self::ReturnOperand;
25}
26
27pub trait Keys {
28    type ReturnOperand;
29
30    fn keys(&self) -> Self::ReturnOperand;
31}
32
33pub trait Ungroup {
34    type ReturnOperand;
35
36    fn ungroup(&self) -> Self::ReturnOperand;
37}
38
39pub trait UngroupKeyed {
40    type ReturnOperand;
41
42    fn ungroup_keyed(&self) -> Self::ReturnOperand;
43}