pub struct DdlManager {
ddl_context: DdlContext,
procedure_manager: ProcedureManagerRef,
repartition_procedure_factory: RepartitionProcedureFactoryRef,
}Expand description
The DdlManager provides the ability to execute Ddl.
Fields§
§ddl_context: DdlContext§procedure_manager: ProcedureManagerRef§repartition_procedure_factory: RepartitionProcedureFactoryRefImplementations§
Source§impl DdlManager
impl DdlManager
Sourcepub fn try_new(
ddl_context: DdlContext,
procedure_manager: ProcedureManagerRef,
repartition_procedure_factory: RepartitionProcedureFactoryRef,
register_loaders: bool,
) -> Result<Self>
pub fn try_new( ddl_context: DdlContext, procedure_manager: ProcedureManagerRef, repartition_procedure_factory: RepartitionProcedureFactoryRef, register_loaders: bool, ) -> Result<Self>
Returns a new DdlManager with all Ddl BoxedProcedureLoaders registered.
Sourcepub fn table_metadata_manager(&self) -> &TableMetadataManagerRef
pub fn table_metadata_manager(&self) -> &TableMetadataManagerRef
Returns the TableMetadataManagerRef.
Sourcepub fn create_context(&self) -> DdlContext
pub fn create_context(&self) -> DdlContext
Returns the DdlContext
Sourcepub fn register_loaders(&self) -> Result<()>
pub fn register_loaders(&self) -> Result<()>
Registers all Ddl loaders.
Sourceasync fn submit_repartition_task(
&self,
table_id: TableId,
table_name: TableName,
__arg3: Repartition,
wait: bool,
timeout: Duration,
) -> Result<(ProcedureId, Option<Output>)>
async fn submit_repartition_task( &self, table_id: TableId, table_name: TableName, __arg3: Repartition, wait: bool, timeout: Duration, ) -> Result<(ProcedureId, Option<Output>)>
Submits a repartition procedure for the specified table.
This creates a repartition procedure using the provided table_id,
table_name, and Repartition configuration, and then either executes it
to completion or just submits it for asynchronous execution.
The Repartition argument contains the original (from_partition_exprs)
and target (into_partition_exprs) partition expressions that define how
the table should be repartitioned.
The wait flag controls whether this method waits for the repartition
procedure to finish:
- If
waitistrue, the procedure is executed and this method awaits its completion, returning both the generatedProcedureIdand the finalOutputof the procedure. - If
waitisfalse, the procedure is only submitted to the procedure manager for asynchronous execution, and this method returns theProcedureIdalong withNoneas the output.
Sourcepub async fn submit_alter_table_task(
&self,
table_id: TableId,
alter_table_task: AlterTableTask,
ddl_options: DdlOptions,
) -> Result<(ProcedureId, Option<Output>)>
pub async fn submit_alter_table_task( &self, table_id: TableId, alter_table_task: AlterTableTask, ddl_options: DdlOptions, ) -> Result<(ProcedureId, Option<Output>)>
Submits and executes an alter table task.
Sourcepub async fn submit_create_table_task(
&self,
create_table_task: CreateTableTask,
) -> Result<(ProcedureId, Option<Output>)>
pub async fn submit_create_table_task( &self, create_table_task: CreateTableTask, ) -> Result<(ProcedureId, Option<Output>)>
Submits and executes a create table task.
Sourcepub async fn submit_create_view_task(
&self,
create_view_task: CreateViewTask,
) -> Result<(ProcedureId, Option<Output>)>
pub async fn submit_create_view_task( &self, create_view_task: CreateViewTask, ) -> Result<(ProcedureId, Option<Output>)>
Submits and executes a [CreateViewTask].
Sourcepub async fn submit_create_logical_table_tasks(
&self,
create_table_tasks: Vec<CreateTableTask>,
physical_table_id: TableId,
) -> Result<(ProcedureId, Option<Output>)>
pub async fn submit_create_logical_table_tasks( &self, create_table_tasks: Vec<CreateTableTask>, physical_table_id: TableId, ) -> Result<(ProcedureId, Option<Output>)>
Submits and executes a create multiple logical table tasks.
Sourcepub async fn submit_alter_logical_table_tasks(
&self,
alter_table_tasks: Vec<AlterTableTask>,
physical_table_id: TableId,
) -> Result<(ProcedureId, Option<Output>)>
pub async fn submit_alter_logical_table_tasks( &self, alter_table_tasks: Vec<AlterTableTask>, physical_table_id: TableId, ) -> Result<(ProcedureId, Option<Output>)>
Submits and executes alter multiple table tasks.
Sourcepub async fn submit_drop_table_task(
&self,
drop_table_task: DropTableTask,
) -> Result<(ProcedureId, Option<Output>)>
pub async fn submit_drop_table_task( &self, drop_table_task: DropTableTask, ) -> Result<(ProcedureId, Option<Output>)>
Submits and executes a drop table task.
Sourcepub async fn submit_create_database(
&self,
__arg1: CreateDatabaseTask,
) -> Result<(ProcedureId, Option<Output>)>
pub async fn submit_create_database( &self, __arg1: CreateDatabaseTask, ) -> Result<(ProcedureId, Option<Output>)>
Submits and executes a create database task.
Sourcepub async fn submit_drop_database(
&self,
__arg1: DropDatabaseTask,
) -> Result<(ProcedureId, Option<Output>)>
pub async fn submit_drop_database( &self, __arg1: DropDatabaseTask, ) -> Result<(ProcedureId, Option<Output>)>
Submits and executes a drop table task.
pub async fn submit_alter_database( &self, alter_database_task: AlterDatabaseTask, ) -> Result<(ProcedureId, Option<Output>)>
Sourcepub async fn submit_create_flow_task(
&self,
create_flow: CreateFlowTask,
query_context: QueryContext,
) -> Result<(ProcedureId, Option<Output>)>
pub async fn submit_create_flow_task( &self, create_flow: CreateFlowTask, query_context: QueryContext, ) -> Result<(ProcedureId, Option<Output>)>
Submits and executes a create flow task.
Sourcepub async fn submit_drop_flow_task(
&self,
drop_flow: DropFlowTask,
) -> Result<(ProcedureId, Option<Output>)>
pub async fn submit_drop_flow_task( &self, drop_flow: DropFlowTask, ) -> Result<(ProcedureId, Option<Output>)>
Submits and executes a drop flow task.
Sourcepub async fn submit_drop_view_task(
&self,
drop_view: DropViewTask,
) -> Result<(ProcedureId, Option<Output>)>
pub async fn submit_drop_view_task( &self, drop_view: DropViewTask, ) -> Result<(ProcedureId, Option<Output>)>
Submits and executes a drop view task.
Sourcepub async fn submit_truncate_table_task(
&self,
truncate_table_task: TruncateTableTask,
table_info_value: DeserializedValueWithBytes<TableInfoValue>,
) -> Result<(ProcedureId, Option<Output>)>
pub async fn submit_truncate_table_task( &self, truncate_table_task: TruncateTableTask, table_info_value: DeserializedValueWithBytes<TableInfoValue>, ) -> Result<(ProcedureId, Option<Output>)>
Submits and executes a truncate table task.
Sourcepub async fn submit_comment_on_task(
&self,
comment_on_task: CommentOnTask,
) -> Result<(ProcedureId, Option<Output>)>
pub async fn submit_comment_on_task( &self, comment_on_task: CommentOnTask, ) -> Result<(ProcedureId, Option<Output>)>
Submits and executes a comment on task.
Sourceasync fn execute_procedure_and_wait(
&self,
procedure_with_id: ProcedureWithId,
) -> Result<(ProcedureId, Option<Output>)>
async fn execute_procedure_and_wait( &self, procedure_with_id: ProcedureWithId, ) -> Result<(ProcedureId, Option<Output>)>
Executes a procedure and waits for the result.
Sourceasync fn submit_procedure(
&self,
procedure_with_id: ProcedureWithId,
) -> Result<ProcedureId>
async fn submit_procedure( &self, procedure_with_id: ProcedureWithId, ) -> Result<ProcedureId>
Submits a procedure and returns the procedure id.
pub async fn submit_ddl_task( &self, ctx: &ExecutorContext, request: SubmitDdlTaskRequest, ) -> Result<SubmitDdlTaskResponse>
Auto Trait Implementations§
impl Freeze for DdlManager
impl !RefUnwindSafe for DdlManager
impl Send for DdlManager
impl Sync for DdlManager
impl Unpin for DdlManager
impl UnsafeUnpin for DdlManager
impl !UnwindSafe for DdlManager
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
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§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.§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.§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.§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.§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.§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.§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.§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.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§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 more§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 more§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
§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
§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.§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.§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.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> ServiceExt for T
impl<T> ServiceExt for T
§fn propagate_header(self, header: HeaderName) -> PropagateHeader<Self>where
Self: Sized,
fn propagate_header(self, header: HeaderName) -> PropagateHeader<Self>where
Self: Sized,
§fn add_extension<T>(self, value: T) -> AddExtension<Self, T>where
Self: Sized,
fn add_extension<T>(self, value: T) -> AddExtension<Self, T>where
Self: Sized,
§fn map_request_body<F>(self, f: F) -> MapRequestBody<Self, F>where
Self: Sized,
fn map_request_body<F>(self, f: F) -> MapRequestBody<Self, F>where
Self: Sized,
§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
§fn compression(self) -> Compression<Self>where
Self: Sized,
fn compression(self) -> Compression<Self>where
Self: Sized,
§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
§fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
§fn sensitive_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>where
Self: Sized,
fn sensitive_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>where
Self: Sized,
§fn sensitive_request_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<Self>where
Self: Sized,
fn sensitive_request_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<Self>where
Self: Sized,
§fn sensitive_response_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveResponseHeaders<Self>where
Self: Sized,
fn sensitive_response_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveResponseHeaders<Self>where
Self: Sized,
§fn override_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn override_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
§fn append_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn append_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
§fn insert_request_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn insert_request_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
§fn override_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn override_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
§fn append_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn append_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
§fn insert_response_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn insert_response_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
§fn set_request_id<M>(
self,
header_name: HeaderName,
make_request_id: M,
) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
fn set_request_id<M>(
self,
header_name: HeaderName,
make_request_id: M,
) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
§fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
x-request-id as the header name. Read more§fn propagate_request_id(
self,
header_name: HeaderName,
) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_request_id(
self,
header_name: HeaderName,
) -> PropagateRequestId<Self>where
Self: Sized,
§fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
x-request-id as the header name. Read more§fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>where
Self: Sized,
fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>where
Self: Sized,
500 Internal Server responses. Read more§fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
Self: Sized,
fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
Self: Sized,
413 Payload Too Large responses. Read more§fn trim_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
fn trim_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
§fn append_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
fn append_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
§impl<T> Tap for T
impl<T> Tap for T
§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 more§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 more§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 more§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 more§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 more§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 more§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.§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.§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.§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.§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.§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.§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.