Struct mz_timely_util::order::Partitioned
source · pub struct Partitioned<P, T>(/* private fields */);
Expand description
A partially ordered timestamp that is partitioned by an arbitrary number of partitions
identified by P
. The construction allows for efficient representation of frontiers with
Antichains.
A Partitioned<P, T>
timestamp is internally the product order of an Interval<P>
and a bare
timestamp T
. An Interval<P>
represents an inclusive range of values from the type P
and
its partial order corresponds to the subset order.
Effectively, the minimum Partitioned
timestamp will start out with the maximum possible
Interval<P>
on one side and the minimum timestamp T
on the other side. Users of this
timestamp can selectively downgrade the timestamp by advancing T
, shrinking the interval, or
both.
Antichains of this type are efficient in storage. In the worst case, where all chosen partitions have gaps between them, the produced antichain has twice as many elements as partitions. This is because the “dead space” between the selected partitions must have a representative timestamp in order for that space to be useable in the future.
Implementations§
source§impl<P: Clone + PartialOrd, T> Partitioned<P, T>
impl<P: Clone + PartialOrd, T> Partitioned<P, T>
sourcepub fn new_singleton(partition: P, timestamp: T) -> Self
pub fn new_singleton(partition: P, timestamp: T) -> Self
Constructs a new timestamp for a specific partition.
sourcepub fn new_range(lower: P, upper: P, timestamp: T) -> Self
pub fn new_range(lower: P, upper: P, timestamp: T) -> Self
Constructs a new timestamp for a partition range.
sourcepub fn interval(&self) -> &Interval<P>
pub fn interval(&self) -> &Interval<P>
Returns the interval component of this partitioned timestamp.
pub fn timestamp_mut(&mut self) -> &mut T
Trait Implementations§
source§impl<P: Clone, T: Clone> Clone for Partitioned<P, T>
impl<P: Clone, T: Clone> Clone for Partitioned<P, T>
source§fn clone(&self) -> Partitioned<P, T>
fn clone(&self) -> Partitioned<P, T>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<'de, P, T> Deserialize<'de> for Partitioned<P, T>where
P: Deserialize<'de>,
T: Deserialize<'de>,
impl<'de, P, T> Deserialize<'de> for Partitioned<P, T>where
P: Deserialize<'de>,
T: Deserialize<'de>,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
source§impl<P: Ord, T: Ord> Ord for Partitioned<P, T>
impl<P: Ord, T: Ord> Ord for Partitioned<P, T>
source§fn cmp(&self, other: &Partitioned<P, T>) -> Ordering
fn cmp(&self, other: &Partitioned<P, T>) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl<P: PartialEq, T: PartialEq> PartialEq for Partitioned<P, T>
impl<P: PartialEq, T: PartialEq> PartialEq for Partitioned<P, T>
source§fn eq(&self, other: &Partitioned<P, T>) -> bool
fn eq(&self, other: &Partitioned<P, T>) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl<P: PartialOrd, T: PartialOrd> PartialOrd for Partitioned<P, T>
impl<P: PartialOrd, T: PartialOrd> PartialOrd for Partitioned<P, T>
source§fn partial_cmp(&self, other: &Partitioned<P, T>) -> Option<Ordering>
fn partial_cmp(&self, other: &Partitioned<P, T>) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§impl<P: Ord + Eq, T: PartialOrder> PartialOrder for Partitioned<P, T>
impl<P: Ord + Eq, T: PartialOrder> PartialOrder for Partitioned<P, T>
source§impl<P: Clone, T: Timestamp> PathSummary<Partitioned<P, T>> for ()
impl<P: Clone, T: Timestamp> PathSummary<Partitioned<P, T>> for ()
source§fn results_in(&self, src: &Partitioned<P, T>) -> Option<Partitioned<P, T>>
fn results_in(&self, src: &Partitioned<P, T>) -> Option<Partitioned<P, T>>
source§impl<P, T> Serialize for Partitioned<P, T>
impl<P, T> Serialize for Partitioned<P, T>
source§impl<P, T: Timestamp> Timestamp for Partitioned<P, T>
impl<P, T: Timestamp> Timestamp for Partitioned<P, T>
impl<P: Eq, T: Eq> Eq for Partitioned<P, T>
impl<P, T> StructuralEq for Partitioned<P, T>
impl<P, T> StructuralPartialEq for Partitioned<P, T>
Auto Trait Implementations§
impl<P, T> RefUnwindSafe for Partitioned<P, T>where
P: RefUnwindSafe,
T: RefUnwindSafe,
impl<P, T> Send for Partitioned<P, T>
impl<P, T> Sync for Partitioned<P, T>
impl<P, T> Unpin for Partitioned<P, T>
impl<P, T> UnwindSafe for Partitioned<P, T>where
P: UnwindSafe,
T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<T> FutureExt for T
impl<T> FutureExt for T
source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request