pub struct TraceRc<Tr: TraceReader> {
pub wrapper: Rc<RefCell<TraceBox<Tr>>>,
/* private fields */
}
Expand description
A handle to a shared trace.
As long as the handle exists, the wrapped trace should continue to exist and will not advance its timestamps past the frontier maintained by the handle. The intent is that such a handle appears as if it is a privately maintained trace, despite being backed by shared resources.
Fields§
§wrapper: Rc<RefCell<TraceBox<Tr>>>
Wrapped trace. Please be gentle when using.
Implementations§
Trait Implementations§
Source§impl<Tr: TraceReader> Clone for TraceRc<Tr>
impl<Tr: TraceReader> Clone for TraceRc<Tr>
Source§impl<Tr: TraceReader> Drop for TraceRc<Tr>
impl<Tr: TraceReader> Drop for TraceRc<Tr>
Source§impl<Tr: TraceReader> TraceReader for TraceRc<Tr>
impl<Tr: TraceReader> TraceReader for TraceRc<Tr>
Source§fn set_logical_compaction(&mut self, frontier: AntichainRef<'_, Tr::Time>)
fn set_logical_compaction(&mut self, frontier: AntichainRef<'_, Tr::Time>)
Sets frontier to now be elements in frontier
.
This change may not have immediately observable effects. It informs the shared trace that this
handle no longer requires access to times other than those in the future of frontier
, but if
there are other handles to the same trace, it may not yet be able to compact.
Source§fn set_physical_compaction(&mut self, frontier: AntichainRef<'_, Tr::Time>)
fn set_physical_compaction(&mut self, frontier: AntichainRef<'_, Tr::Time>)
Allows the trace to compact batches of times before frontier
.
Source§fn cursor_through(
&mut self,
frontier: AntichainRef<'_, Tr::Time>,
) -> Option<(Tr::Cursor, Tr::Storage)>
fn cursor_through( &mut self, frontier: AntichainRef<'_, Tr::Time>, ) -> Option<(Tr::Cursor, Tr::Storage)>
Creates a new cursor over the wrapped trace.
Source§type Batch = <Tr as TraceReader>::Batch
type Batch = <Tr as TraceReader>::Batch
Source§type Storage = <Tr as TraceReader>::Storage
type Storage = <Tr as TraceReader>::Storage
Self::Cursor
. Likely related to Self::Batch
.Source§type Cursor = <Tr as TraceReader>::Cursor
type Cursor = <Tr as TraceReader>::Cursor
Source§fn get_logical_compaction(&mut self) -> AntichainRef<'_, Tr::Time>
fn get_logical_compaction(&mut self) -> AntichainRef<'_, Tr::Time>
Source§fn get_physical_compaction(&mut self) -> AntichainRef<'_, Tr::Time>
fn get_physical_compaction(&mut self) -> AntichainRef<'_, Tr::Time>
Source§fn map_batches<F: FnMut(&Self::Batch)>(&self, f: F)
fn map_batches<F: FnMut(&Self::Batch)>(&self, f: F)
Source§fn cursor(&mut self) -> (Self::Cursor, Self::Storage)
fn cursor(&mut self) -> (Self::Cursor, Self::Storage)
Source§fn read_upper(&mut self, target: &mut Antichain<Self::Time>)
fn read_upper(&mut self, target: &mut Antichain<Self::Time>)
Source§impl<Tr: TraceReader> WithLayout for TraceRc<Tr>
impl<Tr: TraceReader> WithLayout for TraceRc<Tr>
Source§type Layout = <Tr as WithLayout>::Layout
type Layout = <Tr as WithLayout>::Layout
Auto Trait Implementations§
impl<Tr> Freeze for TraceRc<Tr>
impl<Tr> !RefUnwindSafe for TraceRc<Tr>
impl<Tr> !Send for TraceRc<Tr>
impl<Tr> !Sync for TraceRc<Tr>
impl<Tr> Unpin for TraceRc<Tr>
impl<Tr> !UnwindSafe for TraceRc<Tr>
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<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<L> LayoutExt for Lwhere
L: WithLayout,
impl<L> LayoutExt for Lwhere
L: WithLayout,
Source§type KeyOwn = <<<L as WithLayout>::Layout as Layout>::KeyContainer as BatchContainer>::Owned
type KeyOwn = <<<L as WithLayout>::Layout as Layout>::KeyContainer as BatchContainer>::Owned
Source§type Key<'a> = <<<L as WithLayout>::Layout as Layout>::KeyContainer as BatchContainer>::ReadItem<'a>
type Key<'a> = <<<L as WithLayout>::Layout as Layout>::KeyContainer as BatchContainer>::ReadItem<'a>
Source§type ValOwn = <<<L as WithLayout>::Layout as Layout>::ValContainer as BatchContainer>::Owned
type ValOwn = <<<L as WithLayout>::Layout as Layout>::ValContainer as BatchContainer>::Owned
Source§type Val<'a> = <<<L as WithLayout>::Layout as Layout>::ValContainer as BatchContainer>::ReadItem<'a>
type Val<'a> = <<<L as WithLayout>::Layout as Layout>::ValContainer as BatchContainer>::ReadItem<'a>
Source§type Time = <<<L as WithLayout>::Layout as Layout>::TimeContainer as BatchContainer>::Owned
type Time = <<<L as WithLayout>::Layout as Layout>::TimeContainer as BatchContainer>::Owned
Source§type TimeGat<'a> = <<<L as WithLayout>::Layout as Layout>::TimeContainer as BatchContainer>::ReadItem<'a>
type TimeGat<'a> = <<<L as WithLayout>::Layout as Layout>::TimeContainer as BatchContainer>::ReadItem<'a>
Source§type Diff = <<<L as WithLayout>::Layout as Layout>::DiffContainer as BatchContainer>::Owned
type Diff = <<<L as WithLayout>::Layout as Layout>::DiffContainer as BatchContainer>::Owned
Source§type DiffGat<'a> = <<<L as WithLayout>::Layout as Layout>::DiffContainer as BatchContainer>::ReadItem<'a>
type DiffGat<'a> = <<<L as WithLayout>::Layout as Layout>::DiffContainer as BatchContainer>::ReadItem<'a>
Source§type KeyContainer = <<L as WithLayout>::Layout as Layout>::KeyContainer
type KeyContainer = <<L as WithLayout>::Layout as Layout>::KeyContainer
Source§type ValContainer = <<L as WithLayout>::Layout as Layout>::ValContainer
type ValContainer = <<L as WithLayout>::Layout as Layout>::ValContainer
Source§type TimeContainer = <<L as WithLayout>::Layout as Layout>::TimeContainer
type TimeContainer = <<L as WithLayout>::Layout as Layout>::TimeContainer
Source§type DiffContainer = <<L as WithLayout>::Layout as Layout>::DiffContainer
type DiffContainer = <<L as WithLayout>::Layout as Layout>::DiffContainer
Source§fn owned_key(key: <L as LayoutExt>::Key<'_>) -> <L as LayoutExt>::KeyOwn
fn owned_key(key: <L as LayoutExt>::Key<'_>) -> <L as LayoutExt>::KeyOwn
Source§fn owned_val(val: <L as LayoutExt>::Val<'_>) -> <L as LayoutExt>::ValOwn
fn owned_val(val: <L as LayoutExt>::Val<'_>) -> <L as LayoutExt>::ValOwn
Source§fn owned_time(time: <L as LayoutExt>::TimeGat<'_>) -> <L as LayoutExt>::Time
fn owned_time(time: <L as LayoutExt>::TimeGat<'_>) -> <L as LayoutExt>::Time
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
.