pub struct Partitioned<P, T>(Product<Interval<P>, T>);
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.
Tuple Fields§
§0: Product<Interval<P>, T>
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<P: Copy, T: Copy> Columnation for Partitioned<P, T>
impl<P: Copy, T: Copy> Columnation for Partitioned<P, T>
Source§type InnerRegion = CopyRegion<Partitioned<P, T>>
type InnerRegion = CopyRegion<Partitioned<P, T>>
Self
type. Note: not allocations of Self
, but of the
things that it owns.Source§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: PartialOrd, T: PartialOrd> PartialOrd for Partitioned<P, T>
impl<P: PartialOrd, T: PartialOrd> PartialOrd for Partitioned<P, T>
Source§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§fn followed_by(&self, _other: &Self) -> Option<Self>
fn followed_by(&self, _other: &Self) -> Option<Self>
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: Copy, T: Copy> Copy for Partitioned<P, T>
impl<P: Eq, T: Eq> Eq for Partitioned<P, T>
impl<P, T> StructuralPartialEq for Partitioned<P, T>
Auto Trait Implementations§
impl<P, T> Freeze for Partitioned<P, T>
impl<P, T> RefUnwindSafe for Partitioned<P, T>where
T: RefUnwindSafe,
P: 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
T: UnwindSafe,
P: 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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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§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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§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
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
§Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute
value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
§Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
Quirk
value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition
value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PreferredContainer for T
impl<T> PreferredContainer for T
Source§impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
Source§fn plus_equals(&mut self, rhs: &&'a S)
fn plus_equals(&mut self, rhs: &&'a S)
std::ops::AddAssign
, for types that do not implement AddAssign
.