standing_relations/convenience/
feedback.rs1use std::hash::Hash;
2
3use crate::{CreationContext, Op, Relation};
4
5impl<'a> CreationContext<'a> {
6 pub fn new() -> Self {
7 Self::new_()
8 }
9}
10
11impl<'a, K: Clone + Eq + Hash + 'a, V: Clone + Eq + Hash + 'a, C: Op<D = (K, V)> + 'a> Relation<C> {
12 pub fn first_occurences<I>(
13 self,
14 context: &mut CreationContext<'a, I>,
15 ) -> Relation<impl Op<D = (K, V)>> {
16 let (input, input_rel) = context.new_trackable_input();
17 let input_rel = input_rel.save();
18 let new_occurences = self.antijoin(input_rel.get().fsts()).into_output(context);
19 context.feed_while(new_occurences, input);
20 input_rel.get()
21 }
22}