pub struct StorageCollectionsImpl<T: TimelyTimestamp + Lattice + Codec64 + From<EpochMillis> + TimestampManipulation> {Show 14 fields
envd_epoch: NonZeroI64,
read_only: bool,
finalizable_shards: Arc<ShardIdSet>,
finalized_shards: Arc<ShardIdSet>,
collections: Arc<Mutex<BTreeMap<GlobalId, CollectionState<T>>>>,
txns_read: TxnsRead<T>,
config: Arc<Mutex<StorageConfiguration>>,
initial_txn_upper: Antichain<T>,
persist_location: PersistLocation,
persist: Arc<PersistClientCache>,
cmd_tx: UnboundedSender<BackgroundCmd<T>>,
holds_tx: UnboundedSender<(GlobalId, ChangeBatch<T>)>,
_background_task: Arc<AbortOnDropHandle<()>>,
_finalize_shards_task: Arc<AbortOnDropHandle<()>>,
}
Expand description
Implementation of StorageCollections that is shallow-cloneable and uses a background task for doing work concurrently, in the background.
Fields§
§envd_epoch: NonZeroI64
The fencing token for this instance of StorageCollections, and really all of the controllers and Coordinator.
read_only: bool
Whether or not this StorageCollections is in read-only mode.
When in read-only mode, we are not allowed to affect changes to external systems, including, for example, acquiring and downgrading critical SinceHandles
finalizable_shards: Arc<ShardIdSet>
The set of ShardIds that we have to finalize. These will have been persisted by the caller of StorageCollections::prepare_state.
finalized_shards: Arc<ShardIdSet>
The set of ShardIds that we have finalized. We keep track of shards here until we are given a chance to let our callers know that these have been finalized, for example via StorageCollections::prepare_state.
collections: Arc<Mutex<BTreeMap<GlobalId, CollectionState<T>>>>
Collections maintained by this StorageCollections.
txns_read: TxnsRead<T>
A shared TxnsCache running in a task and communicated with over a channel.
config: Arc<Mutex<StorageConfiguration>>
Storage configuration parameters.
initial_txn_upper: Antichain<T>
The upper of the txn shard as it was when we booted. We forward the upper of created/registered tables to make sure that their uppers are at least not less than the initially known txn upper.
NOTE: This works around a quirk in how the adapter chooses the as_of of existing indexes when bootstrapping, where tables that have an upper that is less than the initially known txn upper can lead to indexes that cannot hydrate in read-only mode.
persist_location: PersistLocation
The persist location where all storage collections are being written to
persist: Arc<PersistClientCache>
A persist client used to write to storage collections
cmd_tx: UnboundedSender<BackgroundCmd<T>>
For sending commands to our internal task.
holds_tx: UnboundedSender<(GlobalId, ChangeBatch<T>)>
For sending updates about read holds to our internal task.
_background_task: Arc<AbortOnDropHandle<()>>
Handles to tasks we own, making sure they’re dropped when we are.
_finalize_shards_task: Arc<AbortOnDropHandle<()>>
Implementations§
source§impl<T> StorageCollectionsImpl<T>where
T: TimelyTimestamp + Lattice + Codec64 + From<EpochMillis> + TimestampManipulation + Into<Timestamp>,
impl<T> StorageCollectionsImpl<T>where
T: TimelyTimestamp + Lattice + Codec64 + From<EpochMillis> + TimestampManipulation + Into<Timestamp>,
sourcepub async fn new(
persist_location: PersistLocation,
persist_clients: Arc<PersistClientCache>,
metrics_registry: &MetricsRegistry,
_now: NowFn,
txns_metrics: Arc<TxnMetrics>,
envd_epoch: NonZeroI64,
read_only: bool,
connection_context: ConnectionContext,
txn: &dyn StorageTxn<T>,
) -> Self
pub async fn new( persist_location: PersistLocation, persist_clients: Arc<PersistClientCache>, metrics_registry: &MetricsRegistry, _now: NowFn, txns_metrics: Arc<TxnMetrics>, envd_epoch: NonZeroI64, read_only: bool, connection_context: ConnectionContext, txn: &dyn StorageTxn<T>, ) -> Self
Creates and returns a new StorageCollections.
Note that when creating a new StorageCollections, you must also reconcile it with the previous state using StorageCollections::initialize_state, StorageCollections::prepare_state, and StorageCollections::create_collections.
sourceasync fn open_data_handles(
&self,
id: &GlobalId,
shard: ShardId,
since: Option<&Antichain<T>>,
relation_desc: RelationDesc,
persist_client: &PersistClient,
) -> (WriteHandle<SourceData, (), T, Diff>, SinceHandleWrapper<T>)
async fn open_data_handles( &self, id: &GlobalId, shard: ShardId, since: Option<&Antichain<T>>, relation_desc: RelationDesc, persist_client: &PersistClient, ) -> (WriteHandle<SourceData, (), T, Diff>, SinceHandleWrapper<T>)
Opens a WriteHandle and a SinceHandleWrapper, for holding back the since.
since
is an optional since that the read handle will be forwarded to
if it is less than its current since.
This will halt!
the process if we cannot successfully acquire a
critical handle with our current epoch.
sourceasync fn open_write_handle(
&self,
id: &GlobalId,
shard: ShardId,
relation_desc: RelationDesc,
persist_client: &PersistClient,
) -> WriteHandle<SourceData, (), T, Diff>
async fn open_write_handle( &self, id: &GlobalId, shard: ShardId, relation_desc: RelationDesc, persist_client: &PersistClient, ) -> WriteHandle<SourceData, (), T, Diff>
Opens a write handle for the given shard
.
sourceasync fn open_critical_handle(
&self,
id: &GlobalId,
shard: ShardId,
since: Option<&Antichain<T>>,
persist_client: &PersistClient,
) -> SinceHandle<SourceData, (), T, Diff, PersistEpoch>
async fn open_critical_handle( &self, id: &GlobalId, shard: ShardId, since: Option<&Antichain<T>>, persist_client: &PersistClient, ) -> SinceHandle<SourceData, (), T, Diff, PersistEpoch>
Opens a critical since handle for the given shard
.
since
is an optional since that the read handle will be forwarded to
if it is less than its current since.
This will halt!
the process if we cannot successfully acquire a
critical handle with our current epoch.
sourceasync fn open_leased_handle(
&self,
id: &GlobalId,
shard: ShardId,
relation_desc: RelationDesc,
since: Option<&Antichain<T>>,
persist_client: &PersistClient,
) -> ReadHandle<SourceData, (), T, Diff>
async fn open_leased_handle( &self, id: &GlobalId, shard: ShardId, relation_desc: RelationDesc, since: Option<&Antichain<T>>, persist_client: &PersistClient, ) -> ReadHandle<SourceData, (), T, Diff>
Opens a leased ReadHandle, for the purpose of holding back a since,
for the given shard
.
since
is an optional since that the read handle will be forwarded to
if it is less than its current since.
fn register_handles( &self, id: GlobalId, is_in_txns: bool, since_handle: SinceHandleWrapper<T>, write_handle: WriteHandle<SourceData, (), T, Diff>, )
fn send(&self, cmd: BackgroundCmd<T>)
async fn snapshot_stats_inner( &self, id: GlobalId, as_of: SnapshotStatsAsOf<T>, ) -> Result<SnapshotStats, StorageError<T>>
sourcefn install_collection_dependency_read_holds_inner(
&self,
self_collections: &mut BTreeMap<GlobalId, CollectionState<T>>,
id: GlobalId,
) -> Result<(), StorageError<T>>
fn install_collection_dependency_read_holds_inner( &self, self_collections: &mut BTreeMap<GlobalId, CollectionState<T>>, id: GlobalId, ) -> Result<(), StorageError<T>>
If this identified collection has a dependency, install a read hold on it.
This is necessary to ensure that the dependency’s since does not advance beyond its dependents’.
sourcefn determine_collection_dependencies(
&self,
self_collections: &BTreeMap<GlobalId, CollectionState<T>>,
data_source: &DataSource,
) -> Result<Vec<GlobalId>, StorageError<T>>
fn determine_collection_dependencies( &self, self_collections: &BTreeMap<GlobalId, CollectionState<T>>, data_source: &DataSource, ) -> Result<Vec<GlobalId>, StorageError<T>>
Determine if this collection has another dependency.
Currently, collections have either 0 or 1 dependencies.
sourcefn install_read_capabilities_inner(
&self,
self_collections: &mut BTreeMap<GlobalId, CollectionState<T>>,
from_id: GlobalId,
storage_dependencies: &[GlobalId],
read_capability: Antichain<T>,
) -> Result<(), StorageError<T>>
fn install_read_capabilities_inner( &self, self_collections: &mut BTreeMap<GlobalId, CollectionState<T>>, from_id: GlobalId, storage_dependencies: &[GlobalId], read_capability: Antichain<T>, ) -> Result<(), StorageError<T>>
Install read capabilities on the given storage_dependencies
.
async fn read_handle_for_snapshot( &self, metadata: &CollectionMetadata, id: GlobalId, ) -> Result<ReadHandle<SourceData, (), T, Diff>, StorageError<T>>
fn set_read_policies_inner( &self, collections: &mut BTreeMap<GlobalId, CollectionState<T>>, policies: Vec<(GlobalId, ReadPolicy<T>)>, )
fn update_read_capabilities_inner( cmd_tx: &UnboundedSender<BackgroundCmd<T>>, collections: &mut BTreeMap<GlobalId, CollectionState<T>>, updates: &mut BTreeMap<GlobalId, ChangeBatch<T>>, )
sourcefn synchronize_finalized_shards(&self, storage_metadata: &StorageMetadata)
fn synchronize_finalized_shards(&self, storage_metadata: &StorageMetadata)
Remove any shards that we know are finalized
Trait Implementations§
source§impl<T: Clone + TimelyTimestamp + Lattice + Codec64 + From<EpochMillis> + TimestampManipulation> Clone for StorageCollectionsImpl<T>
impl<T: Clone + TimelyTimestamp + Lattice + Codec64 + From<EpochMillis> + TimestampManipulation> Clone for StorageCollectionsImpl<T>
source§fn clone(&self) -> StorageCollectionsImpl<T>
fn clone(&self) -> StorageCollectionsImpl<T>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<T: Debug + TimelyTimestamp + Lattice + Codec64 + From<EpochMillis> + TimestampManipulation> Debug for StorageCollectionsImpl<T>
impl<T: Debug + TimelyTimestamp + Lattice + Codec64 + From<EpochMillis> + TimestampManipulation> Debug for StorageCollectionsImpl<T>
source§impl<T> StorageCollections for StorageCollectionsImpl<T>where
T: TimelyTimestamp + Lattice + Codec64 + From<EpochMillis> + TimestampManipulation + Into<Timestamp>,
impl<T> StorageCollections for StorageCollectionsImpl<T>where
T: TimelyTimestamp + Lattice + Codec64 + From<EpochMillis> + TimestampManipulation + Into<Timestamp>,
type Timestamp = T
source§fn initialize_state<'life0, 'life1, 'async_trait>(
&'life0 self,
txn: &'life1 mut (dyn StorageTxn<T> + Send),
init_ids: BTreeSet<GlobalId>,
drop_ids: BTreeSet<GlobalId>,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError<T>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn initialize_state<'life0, 'life1, 'async_trait>(
&'life0 self,
txn: &'life1 mut (dyn StorageTxn<T> + Send),
init_ids: BTreeSet<GlobalId>,
drop_ids: BTreeSet<GlobalId>,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError<T>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
source§fn update_parameters(&self, config_params: StorageParameters)
fn update_parameters(&self, config_params: StorageParameters)
source§fn collection_metadata(
&self,
id: GlobalId,
) -> Result<CollectionMetadata, StorageError<Self::Timestamp>>
fn collection_metadata( &self, id: GlobalId, ) -> Result<CollectionMetadata, StorageError<Self::Timestamp>>
id
.source§fn active_collection_metadatas(&self) -> Vec<(GlobalId, CollectionMetadata)>
fn active_collection_metadatas(&self) -> Vec<(GlobalId, CollectionMetadata)>
source§fn collections_frontiers(
&self,
ids: Vec<GlobalId>,
) -> Result<Vec<CollectionFrontiers<Self::Timestamp>>, StorageError<Self::Timestamp>>
fn collections_frontiers( &self, ids: Vec<GlobalId>, ) -> Result<Vec<CollectionFrontiers<Self::Timestamp>>, StorageError<Self::Timestamp>>
source§fn active_collection_frontiers(
&self,
) -> Vec<CollectionFrontiers<Self::Timestamp>>
fn active_collection_frontiers( &self, ) -> Vec<CollectionFrontiers<Self::Timestamp>>
source§fn snapshot_stats<'life0, 'async_trait>(
&'life0 self,
id: GlobalId,
as_of: Antichain<Self::Timestamp>,
) -> Pin<Box<dyn Future<Output = Result<SnapshotStats, StorageError<Self::Timestamp>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn snapshot_stats<'life0, 'async_trait>(
&'life0 self,
id: GlobalId,
as_of: Antichain<Self::Timestamp>,
) -> Pin<Box<dyn Future<Output = Result<SnapshotStats, StorageError<Self::Timestamp>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
id
at as_of
.source§fn snapshot_parts_stats<'life0, 'async_trait>(
&'life0 self,
id: GlobalId,
as_of: Antichain<Self::Timestamp>,
) -> Pin<Box<dyn Future<Output = BoxFuture<'static, Result<SnapshotPartsStats, StorageError<Self::Timestamp>>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn snapshot_parts_stats<'life0, 'async_trait>(
&'life0 self,
id: GlobalId,
as_of: Antichain<Self::Timestamp>,
) -> Pin<Box<dyn Future<Output = BoxFuture<'static, Result<SnapshotPartsStats, StorageError<Self::Timestamp>>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn check_exists(
&self,
id: GlobalId,
) -> Result<(), StorageError<Self::Timestamp>>
fn check_exists( &self, id: GlobalId, ) -> Result<(), StorageError<Self::Timestamp>>
GlobalId
. Returns
an error if the collection does not exist.source§fn prepare_state<'life0, 'life1, 'async_trait>(
&'life0 self,
txn: &'life1 mut (dyn StorageTxn<Self::Timestamp> + Send),
ids_to_add: BTreeSet<GlobalId>,
ids_to_drop: BTreeSet<GlobalId>,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError<T>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn prepare_state<'life0, 'life1, 'async_trait>(
&'life0 self,
txn: &'life1 mut (dyn StorageTxn<Self::Timestamp> + Send),
ids_to_add: BTreeSet<GlobalId>,
ids_to_drop: BTreeSet<GlobalId>,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError<T>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
StorageTxn
with the appropriate metadata given the
IDs to add and drop. Read moresource§fn create_collections_for_bootstrap<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
storage_metadata: &'life1 StorageMetadata,
register_ts: Option<Self::Timestamp>,
collections: Vec<(GlobalId, CollectionDescription<Self::Timestamp>)>,
migrated_storage_collections: &'life2 BTreeSet<GlobalId>,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError<Self::Timestamp>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn create_collections_for_bootstrap<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
storage_metadata: &'life1 StorageMetadata,
register_ts: Option<Self::Timestamp>,
collections: Vec<(GlobalId, CollectionDescription<Self::Timestamp>)>,
migrated_storage_collections: &'life2 BTreeSet<GlobalId>,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError<Self::Timestamp>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self::create_collections
, except used specifically for bootstrap. Read moresource§fn alter_ingestion_source_desc<'life0, 'async_trait>(
&'life0 self,
ingestion_id: GlobalId,
source_desc: SourceDesc,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError<Self::Timestamp>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn alter_ingestion_source_desc<'life0, 'async_trait>(
&'life0 self,
ingestion_id: GlobalId,
source_desc: SourceDesc,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError<Self::Timestamp>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
SourceDesc
. Read moresource§fn alter_ingestion_connections<'life0, 'async_trait>(
&'life0 self,
source_connections: BTreeMap<GlobalId, GenericSourceConnection<InlinedConnection>>,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError<Self::Timestamp>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn alter_ingestion_connections<'life0, 'async_trait>(
&'life0 self,
source_connections: BTreeMap<GlobalId, GenericSourceConnection<InlinedConnection>>,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError<Self::Timestamp>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
GenericSourceConnection
. Read moresource§fn alter_table_desc<'life0, 'async_trait>(
&'life0 self,
table_id: GlobalId,
new_desc: RelationDesc,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError<Self::Timestamp>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn alter_table_desc<'life0, 'async_trait>(
&'life0 self,
table_id: GlobalId,
new_desc: RelationDesc,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError<Self::Timestamp>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
RelationDesc
for the specified table.source§fn drop_collections_unvalidated(
&self,
storage_metadata: &StorageMetadata,
identifiers: Vec<GlobalId>,
)
fn drop_collections_unvalidated( &self, storage_metadata: &StorageMetadata, identifiers: Vec<GlobalId>, )
source§fn set_read_policies(
&self,
policies: Vec<(GlobalId, ReadPolicy<Self::Timestamp>)>,
)
fn set_read_policies( &self, policies: Vec<(GlobalId, ReadPolicy<Self::Timestamp>)>, )
source§fn acquire_read_holds(
&self,
desired_holds: Vec<GlobalId>,
) -> Result<Vec<ReadHold<Self::Timestamp>>, ReadHoldError>
fn acquire_read_holds( &self, desired_holds: Vec<GlobalId>, ) -> Result<Vec<ReadHold<Self::Timestamp>>, ReadHoldError>
source§fn collection_frontiers(
&self,
id: GlobalId,
) -> Result<CollectionFrontiers<Self::Timestamp>, StorageError<Self::Timestamp>>
fn collection_frontiers( &self, id: GlobalId, ) -> Result<CollectionFrontiers<Self::Timestamp>, StorageError<Self::Timestamp>>
source§fn create_collections<'life0, 'life1, 'async_trait>(
&'life0 self,
storage_metadata: &'life1 StorageMetadata,
register_ts: Option<Self::Timestamp>,
collections: Vec<(GlobalId, CollectionDescription<Self::Timestamp>)>,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError<Self::Timestamp>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_collections<'life0, 'life1, 'async_trait>(
&'life0 self,
storage_metadata: &'life1 StorageMetadata,
register_ts: Option<Self::Timestamp>,
collections: Vec<(GlobalId, CollectionDescription<Self::Timestamp>)>,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError<Self::Timestamp>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Auto Trait Implementations§
impl<T> Freeze for StorageCollectionsImpl<T>
impl<T> !RefUnwindSafe for StorageCollectionsImpl<T>
impl<T> Send for StorageCollectionsImpl<T>
impl<T> Sync for StorageCollectionsImpl<T>
impl<T> Unpin for StorageCollectionsImpl<T>where
T: Unpin,
impl<T> !UnwindSafe for StorageCollectionsImpl<T>
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§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.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
source§impl<T, U> OverrideFrom<Option<&T>> for Uwhere
U: OverrideFrom<T>,
impl<T, U> OverrideFrom<Option<&T>> for Uwhere
U: OverrideFrom<T>,
source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> ProgressEventTimestamp for T
impl<T> ProgressEventTimestamp for T
source§impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
source§fn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
RustType::from_proto
.source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
RustType::into_proto
.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
.source§impl<T> Tap for T
impl<T> Tap for T
source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.