raphtory_api/core/entities/properties/
tprop.rs1use crate::core::{
2 entities::properties::prop::Prop,
3 storage::timeindex::{AsTime, EventTime},
4};
5use std::ops::Range;
6
7pub trait TPropOps<'a>: Clone + Send + Sync + Sized + 'a {
8 fn active(&self, w: Range<EventTime>) -> bool {
9 self.clone().iter_window(w).next().is_some()
10 }
11
12 fn active_t(&self, w: Range<i64>) -> bool {
14 self.clone().iter_window_t(w).next().is_some()
15 }
16
17 fn last_before(&self, t: EventTime) -> Option<(EventTime, Prop)> {
18 self.clone().iter_inner_rev(Some(EventTime::MIN..t)).next()
19 }
20
21 fn last_window(&self, w: Range<EventTime>) -> Option<(EventTime, Prop)>;
22
23 fn last(&self) -> Option<(EventTime, Prop)>;
24
25 fn iter_inner(
26 self,
27 range: Option<Range<EventTime>>,
28 ) -> impl Iterator<Item = (EventTime, Prop)> + Send + Sync + 'a;
29
30 fn iter_inner_rev(
31 self,
32 range: Option<Range<EventTime>>,
33 ) -> impl Iterator<Item = (EventTime, Prop)> + Send + Sync + 'a;
34
35 fn iter(self) -> impl Iterator<Item = (EventTime, Prop)> + Send + Sync + 'a {
36 self.iter_inner(None)
37 }
38
39 fn iter_rev(self) -> impl Iterator<Item = (EventTime, Prop)> + Send + Sync + 'a {
40 self.iter_inner_rev(None)
41 }
42
43 fn iter_window(
44 self,
45 r: Range<EventTime>,
46 ) -> impl Iterator<Item = (EventTime, Prop)> + Send + Sync + 'a {
47 self.iter_inner(Some(r))
48 }
49
50 fn iter_window_rev(
51 self,
52 r: Range<EventTime>,
53 ) -> impl Iterator<Item = (EventTime, Prop)> + Send + Sync + 'a {
54 self.iter_inner_rev(Some(r))
55 }
56
57 fn iter_t(self) -> impl Iterator<Item = (i64, Prop)> + Send + Sync + 'a {
58 self.iter().map(|(t, v)| (t.t(), v))
59 }
60
61 fn iter_window_t(self, r: Range<i64>) -> impl Iterator<Item = (i64, Prop)> + Send + Sync + 'a {
62 self.iter_window(EventTime::range(r))
63 .map(|(t, v)| (t.t(), v))
64 }
65
66 fn iter_window_te(
67 self,
68 r: Range<EventTime>,
69 ) -> impl Iterator<Item = (i64, Prop)> + Send + Sync + 'a {
70 self.iter_window(r).map(|(t, v)| (t.t(), v))
71 }
72
73 fn at(&self, ti: &EventTime) -> Option<Prop>;
74}