graphrecords_query/traits/
grouping.rs1use 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}