Struct mz_catalog::durable::Transaction

source ·
pub struct Transaction<'a> { /* private fields */ }
Expand description

A Transaction batches multiple catalog operations together and commits them atomically. An operation also logically groups multiple catalog updates together.

Implementations§

source§

impl<'a> Transaction<'a>

source

pub fn new( durable_catalog: &'a mut dyn DurableCatalogState, _: Snapshot ) -> Result<Transaction<'_>, CatalogError>

source

pub fn get_items(&self) -> impl Iterator<Item = Item>

source

pub fn insert_audit_log_event(&mut self, event: VersionedEvent)

source

pub fn insert_audit_log_events( &mut self, events: impl IntoIterator<Item = VersionedEvent> )

source

pub fn insert_storage_usage_event(&mut self, metric: VersionedStorageUsage)

source

pub fn insert_storage_usage_events( &mut self, metrics: impl IntoIterator<Item = VersionedStorageUsage> )

source

pub fn insert_user_database( &mut self, database_name: &str, owner_id: RoleId, privileges: Vec<MzAclItem> ) -> Result<(DatabaseId, u32), CatalogError>

source

pub fn insert_user_schema( &mut self, database_id: DatabaseId, schema_name: &str, owner_id: RoleId, privileges: Vec<MzAclItem> ) -> Result<(SchemaId, u32), CatalogError>

source

pub fn insert_builtin_role( &mut self, id: RoleId, name: String, attributes: RoleAttributes, membership: RoleMembership, vars: RoleVars, oid: u32 ) -> Result<RoleId, CatalogError>

source

pub fn insert_user_role( &mut self, name: String, attributes: RoleAttributes, membership: RoleMembership, vars: RoleVars ) -> Result<(RoleId, u32), CatalogError>

source

pub fn insert_user_cluster( &mut self, cluster_id: ClusterId, cluster_name: &str, introspection_source_indexes: Vec<(&'static BuiltinLog, GlobalId)>, owner_id: RoleId, privileges: Vec<MzAclItem>, config: ClusterConfig ) -> Result<Vec<(&'static BuiltinLog, GlobalId, u32)>, CatalogError>

Panics if any introspection source id is not a system id

source

pub fn insert_system_cluster( &mut self, cluster_id: ClusterId, cluster_name: &str, introspection_source_indexes: Vec<(&'static BuiltinLog, GlobalId)>, privileges: Vec<MzAclItem>, owner_id: RoleId, config: ClusterConfig ) -> Result<Vec<(&'static BuiltinLog, GlobalId, u32)>, CatalogError>

Panics if any introspection source id is not a system id

source

pub fn rename_cluster( &mut self, cluster_id: ClusterId, cluster_name: &str, cluster_to_name: &str ) -> Result<(), CatalogError>

source

pub fn rename_cluster_replica( &mut self, replica_id: ReplicaId, replica_name: &QualifiedReplica, replica_to_name: &str ) -> Result<(), CatalogError>

source

pub fn insert_cluster_replica( &mut self, cluster_id: ClusterId, replica_id: ReplicaId, replica_name: &str, config: ReplicaConfig, owner_id: RoleId ) -> Result<(), CatalogError>

source

pub fn update_introspection_source_index_gids( &mut self, mappings: impl Iterator<Item = (ClusterId, impl Iterator<Item = (String, GlobalId, u32)>)> ) -> Result<(), CatalogError>

Updates persisted information about persisted introspection source indexes.

Panics if provided id is not a system id.

source

pub fn insert_user_item( &mut self, id: GlobalId, schema_id: SchemaId, item_name: &str, create_sql: String, owner_id: RoleId, privileges: Vec<MzAclItem> ) -> Result<u32, CatalogError>

source

pub fn insert_item( &mut self, id: GlobalId, oid: u32, schema_id: SchemaId, item_name: &str, create_sql: String, owner_id: RoleId, privileges: Vec<MzAclItem> ) -> Result<(), CatalogError>

source

pub fn get_and_increment_id(&mut self, key: String) -> Result<u64, CatalogError>

source

pub fn get_and_increment_id_by( &mut self, key: String, amount: u64 ) -> Result<Vec<u64>, CatalogError>

source

pub fn allocate_system_item_ids( &mut self, amount: u64 ) -> Result<Vec<GlobalId>, CatalogError>

source

pub fn allocate_user_item_ids( &mut self, amount: u64 ) -> Result<Vec<GlobalId>, CatalogError>

source

pub fn allocate_system_replica_id(&mut self) -> Result<ReplicaId, CatalogError>

source

pub fn allocate_audit_log_id(&mut self) -> Result<u64, CatalogError>

source

pub fn allocate_oid(&mut self) -> Result<u32, CatalogError>

Allocates a single OID. OIDs can be recycled if they aren’t currently assigned to any object.

source

pub fn remove_database(&mut self, id: &DatabaseId) -> Result<(), CatalogError>

source

pub fn remove_schema( &mut self, database_id: &Option<DatabaseId>, schema_id: &SchemaId ) -> Result<(), CatalogError>

source

pub fn remove_role(&mut self, name: &str) -> Result<(), CatalogError>

source

pub fn remove_cluster(&mut self, id: ClusterId) -> Result<(), CatalogError>

source

pub fn remove_cluster_replica( &mut self, id: ReplicaId ) -> Result<(), CatalogError>

source

pub fn remove_item(&mut self, id: GlobalId) -> Result<(), CatalogError>

Removes item id from the transaction.

Returns an error if id is not found.

Runtime is linear with respect to the total number of items in the catalog. DO NOT call this function in a loop, use Self::remove_items instead.

source

pub fn remove_items( &mut self, ids: BTreeSet<GlobalId> ) -> Result<(), CatalogError>

Removes all items in ids from the transaction.

Returns an error if any id in ids is not found.

NOTE: On error, there still may be some items removed from the transaction. It is up to the caller to either abort the transaction or commit.

source

pub fn remove_system_object_mappings( &mut self, descriptions: BTreeSet<SystemObjectDescription> ) -> Result<(), CatalogError>

Removes all system object mappings in descriptions from the transaction.

Returns an error if any description in descriptions is not found.

NOTE: On error, there still may be some items removed from the transaction. It is up to the caller to either abort the transaction or commit.

source

pub fn remove_introspection_source_indexes( &mut self, introspection_source_indexes: BTreeSet<(ClusterId, String)> ) -> Result<(), CatalogError>

Removes all introspection source indexes in indexes from the transaction.

Returns an error if any index in indexes is not found.

NOTE: On error, there still may be some indexes removed from the transaction. It is up to the caller to either abort the transaction or commit.

source

pub fn update_item( &mut self, id: GlobalId, item: Item ) -> Result<(), CatalogError>

Updates item id in the transaction to item_name and item.

Returns an error if id is not found.

Runtime is linear with respect to the total number of items in the catalog. DO NOT call this function in a loop, use Self::update_items instead.

source

pub fn update_items( &mut self, items: BTreeMap<GlobalId, Item> ) -> Result<(), CatalogError>

Updates all items with ids matching the keys of items in the transaction, to the corresponding value in items.

Returns an error if any id in items is not found.

NOTE: On error, there still may be some items updated in the transaction. It is up to the caller to either abort the transaction or commit.

source

pub fn update_role( &mut self, id: RoleId, role: Role ) -> Result<(), CatalogError>

Updates role id in the transaction to role.

Returns an error if id is not found.

Runtime is linear with respect to the total number of items in the catalog. DO NOT call this function in a loop, implement and use some Self::update_roles instead. You should model it after Self::update_items.

source

pub fn update_roles( &mut self, roles: BTreeMap<RoleId, Role> ) -> Result<(), CatalogError>

Updates all Roles with ids matching the keys of roles in the transaction, to the corresponding value in roles.

Returns an error if any id in roles is not found.

NOTE: On error, there still may be some roles updated in the transaction. It is up to the caller to either abort the transaction or commit.

source

pub fn update_system_object_mappings( &mut self, mappings: BTreeMap<GlobalId, SystemObjectMapping> ) -> Result<(), CatalogError>

Updates persisted mapping from system objects to global IDs and fingerprints. Each element of mappings should be (old-global-id, new-system-object-mapping).

Panics if provided id is not a system id.

source

pub fn update_cluster( &mut self, id: ClusterId, cluster: Cluster ) -> Result<(), CatalogError>

Updates cluster id in the transaction to cluster.

Returns an error if id is not found.

Runtime is linear with respect to the total number of clusters in the catalog. DO NOT call this function in a loop.

source

pub fn update_cluster_replica( &mut self, replica_id: ReplicaId, replica: ClusterReplica ) -> Result<(), CatalogError>

Updates cluster replica replica_id in the transaction to replica.

Returns an error if replica_id is not found.

Runtime is linear with respect to the total number of cluster replicas in the catalog. DO NOT call this function in a loop.

source

pub fn update_database( &mut self, id: DatabaseId, database: Database ) -> Result<(), CatalogError>

Updates database id in the transaction to database.

Returns an error if id is not found.

Runtime is linear with respect to the total number of databases in the catalog. DO NOT call this function in a loop.

source

pub fn update_schema( &mut self, schema_id: SchemaId, schema: Schema ) -> Result<(), CatalogError>

Updates schema schema_id in the transaction to schema.

Returns an error if schema_id is not found.

Runtime is linear with respect to the total number of schemas in the catalog. DO NOT call this function in a loop.

source

pub fn set_default_privilege( &mut self, role_id: RoleId, database_id: Option<DatabaseId>, schema_id: Option<SchemaId>, object_type: ObjectType, grantee: RoleId, privileges: Option<AclMode> ) -> Result<(), CatalogError>

Set persisted default privilege.

DO NOT call this function in a loop, use Self::set_default_privileges instead.

source

pub fn set_default_privileges( &mut self, default_privileges: Vec<DefaultPrivilege> ) -> Result<(), CatalogError>

Set persisted default privileges.

source

pub fn set_system_privilege( &mut self, grantee: RoleId, grantor: RoleId, acl_mode: Option<AclMode> ) -> Result<(), CatalogError>

Set persisted system privilege.

DO NOT call this function in a loop, use Self::set_system_privileges instead.

source

pub fn set_system_privileges( &mut self, system_privileges: Vec<MzAclItem> ) -> Result<(), CatalogError>

Set persisted system privileges.

source

pub fn set_catalog_content_version( &mut self, version: String ) -> Result<(), CatalogError>

source

pub fn insert_introspection_source_indexes( &mut self, introspection_source_indexes: Vec<(ClusterId, String, GlobalId)> ) -> Result<Vec<IntrospectionSourceIndex>, CatalogError>

Insert persisted introspection source index.

source

pub fn set_system_object_mappings( &mut self, mappings: Vec<SystemObjectMapping> ) -> Result<(), CatalogError>

Set persisted system object mappings.

source

pub fn set_replicas( &mut self, replicas: Vec<ClusterReplica> ) -> Result<(), CatalogError>

Set persisted replica.

source

pub fn set_config( &mut self, key: String, value: Option<u64> ) -> Result<(), CatalogError>

Set persisted configuration.

source

pub fn get_config(&mut self, key: String) -> Option<u64>

Get the value of a persisted config.

source

pub fn set_persist_txn_tables( &mut self, value: PersistTxnTablesImpl ) -> Result<(), CatalogError>

Updates the catalog persist_txn_tables “config” value to match the persist_txn_tables “system var” value.

These are mirrored so that we can toggle the flag with Launch Darkly, but use it in boot before Launch Darkly is available.

source

pub fn set_system_config_synced_once(&mut self) -> Result<(), CatalogError>

Updates the catalog system_config_synced “config” value to true.

source

pub fn update_comment( &mut self, object_id: CommentObjectId, sub_component: Option<usize>, comment: Option<String> ) -> Result<(), CatalogError>

source

pub fn drop_comments( &mut self, object_id: CommentObjectId ) -> Result<Vec<(CommentObjectId, Option<usize>, String)>, CatalogError>

source

pub fn upsert_system_config( &mut self, name: &str, value: String ) -> Result<(), CatalogError>

Upserts persisted system configuration name to value.

source

pub fn remove_system_config(&mut self, name: &str)

Removes persisted system configuration name.

source

pub fn clear_system_configs(&mut self)

Removes all persisted system configurations.

source

pub fn get_clusters(&self) -> impl Iterator<Item = Cluster>

source

pub fn get_cluster_replicas(&self) -> impl Iterator<Item = ClusterReplica>

source

pub fn get_roles(&self) -> impl Iterator<Item = Role>

source

pub fn get_system_object_mappings( &self ) -> impl Iterator<Item = SystemObjectMapping>

source

pub fn get_introspection_source_indexes( &mut self, cluster_id: ClusterId ) -> BTreeMap<String, (GlobalId, u32)>

source

pub fn get_catalog_content_version(&self) -> Option<String>

source

pub fn get_updates(&self) -> impl Iterator<Item = StateUpdate>

source

pub fn commit_op(&mut self)

Commit the current operation within the transaction. This does not cause anything to be written durably, but signals to the current transaction that we are moving on to the next operation.

source

pub async fn commit(self) -> Result<(), CatalogError>

Commits the storage transaction to durable storage. Any error returned indicates the catalog may be in an indeterminate state and needs to be fully re-read before proceeding. In general, this must be fatal to the calling process. We do not panic/halt inside this function itself so that errors can bubble up during initialization.

Trait Implementations§

source§

impl<'a> Debug for Transaction<'a>

source§

fn fmt(&self, __f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a> PartialEq for Transaction<'a>

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl StorageTxn<Timestamp> for Transaction<'_>

source§

fn get_collection_metadata(&self) -> BTreeMap<GlobalId, String>

Retrieve all of the visible storage metadata. Read more
source§

fn insert_collection_metadata( &mut self, metadata: BTreeMap<GlobalId, String> ) -> Result<(), StorageError<Timestamp>>

Add new storage metadata for a collection. Read more
source§

fn delete_collection_metadata( &mut self, ids: BTreeSet<GlobalId> ) -> Vec<(GlobalId, String)>

Remove the metadata associated with the identified collections. Read more
source§

fn get_unfinalized_shards(&self) -> BTreeSet<String>

Retrieve all of the shards that are no longer in use by an active collection but are yet to be finalized.
source§

fn insert_unfinalized_shards( &mut self, s: BTreeSet<String> ) -> Result<(), StorageError<Timestamp>>

Insert the specified values as unfinalized shards.
source§

fn mark_shards_as_finalized(&mut self, shards: BTreeSet<String>)

Mark the specified shards as finalized, deleting them from the unfinalized shard collection.
source§

fn get_persist_txn_shard(&self) -> Option<String>

Get the persist txn shard for this environment if it exists.
source§

fn write_persist_txn_shard( &mut self, shard: String ) -> Result<(), StorageError<Timestamp>>

Store the specified shard as the environment’s persist txn shard. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for Transaction<'a>

§

impl<'a> !RefUnwindSafe for Transaction<'a>

§

impl<'a> Send for Transaction<'a>

§

impl<'a> !Sync for Transaction<'a>

§

impl<'a> Unpin for Transaction<'a>

§

impl<'a> !UnwindSafe for Transaction<'a>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> AsAny for T
where T: Any,

source§

fn as_any(&self) -> &(dyn Any + 'static)

source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T, U> CastInto<U> for T
where U: CastFrom<T>,

source§

fn cast_into(self) -> U

Performs the cast.
source§

impl<T> Conv for T

source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
source§

impl<R, O, T> CopyOnto<ConsecutiveOffsetPairs<R, O>> for T
where R: Region<Index = (usize, usize)>, O: OffsetContainer<usize>, T: CopyOnto<R>,

source§

fn copy_onto( self, target: &mut ConsecutiveOffsetPairs<R, O> ) -> <ConsecutiveOffsetPairs<R, O> as Region>::Index

Copy self into the target container, returning an index that allows to look up the corresponding read item.
source§

impl<T> FmtForward for T

source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FutureExt for T

source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
source§

impl<T, U> OverrideFrom<Option<&T>> for U
where U: OverrideFrom<T>,

source§

fn override_from(self, layer: &Option<&T>) -> U

Override the configuration represented by Self with values from the given layer.
source§

impl<T> Pipe for T
where T: ?Sized,

source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows 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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows 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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<P, R> ProtoType<R> for P
where R: RustType<P>,

source§

impl<R, T> PushInto<FlatStack<R>> for T
where R: Region + Clone + 'static, T: CopyOnto<R>,

source§

fn push_into(self, target: &mut FlatStack<R>)

Push self into the target container.
source§

impl<T> PushInto<Vec<T>> for T

source§

fn push_into(self, target: &mut Vec<T>)

Push self into the target container.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> Tap for T

source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .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
where Self: BorrowMut<B>, B: ?Sized,

Calls .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
where Self: AsRef<R>, R: ?Sized,

Calls .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
where Self: AsMut<R>, R: ?Sized,

Calls .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
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
source§

impl<T> TryConv for T

source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more