struct RegionWorkerLoop<S> {Show 28 fields
id: u32,
config: Arc<MitoConfig>,
regions: Arc<RegionMap>,
dropping_regions: Arc<RegionMap>,
opening_regions: Arc<OpeningRegions>,
sender: Sender<WorkerRequest>,
receiver: Receiver<WorkerRequest>,
wal: Wal<S>,
object_store_manager: ObjectStoreManagerRef,
running: Arc<AtomicBool>,
memtable_builder_provider: MemtableBuilderProvider,
purge_scheduler: SchedulerRef,
write_buffer_manager: WriteBufferManagerRef,
flush_scheduler: FlushScheduler,
compaction_scheduler: CompactionScheduler,
stalled_requests: StalledRequests,
listener: WorkerListener,
cache_manager: CacheManagerRef,
puffin_manager_factory: PuffinManagerFactory,
intermediate_manager: IntermediateManager,
time_provider: Arc<dyn TimeProvider>,
last_periodical_check_millis: i64,
flush_sender: Sender<()>,
flush_receiver: Receiver<()>,
stalled_count: IntGauge,
region_count: IntGauge,
region_edit_queues: HashMap<RegionId, RegionEditQueue>,
schema_metadata_manager: SchemaMetadataManagerRef,
}
Expand description
Background worker loop to handle requests.
Fields§
§id: u32
Id of the worker.
config: Arc<MitoConfig>
Engine config.
regions: Arc<RegionMap>
Regions bound to the worker.
dropping_regions: Arc<RegionMap>
Regions that are not yet fully dropped.
opening_regions: Arc<OpeningRegions>
Regions that are opening.
sender: Sender<WorkerRequest>
Request sender.
receiver: Receiver<WorkerRequest>
Request receiver.
wal: Wal<S>
WAL of the engine.
object_store_manager: ObjectStoreManagerRef
Manages object stores for manifest and SSTs.
running: Arc<AtomicBool>
Whether the worker thread is still running.
memtable_builder_provider: MemtableBuilderProvider
Memtable builder provider for each region.
purge_scheduler: SchedulerRef
Background purge job scheduler.
write_buffer_manager: WriteBufferManagerRef
Engine write buffer manager.
flush_scheduler: FlushScheduler
Schedules background flush requests.
compaction_scheduler: CompactionScheduler
Scheduler for compaction tasks.
stalled_requests: StalledRequests
Stalled write requests.
listener: WorkerListener
Event listener for tests.
cache_manager: CacheManagerRef
Cache.
puffin_manager_factory: PuffinManagerFactory
Puffin manager factory for index.
intermediate_manager: IntermediateManager
Intermediate manager for inverted index.
time_provider: Arc<dyn TimeProvider>
Provider to get current time.
last_periodical_check_millis: i64
Last time to check regions periodically.
flush_sender: Sender<()>
Watch channel sender to notify workers to handle stalled requests.
flush_receiver: Receiver<()>
Watch channel receiver to wait for background flush job.
stalled_count: IntGauge
Gauge of stalled request count.
region_count: IntGauge
Gauge of regions in the worker.
region_edit_queues: HashMap<RegionId, RegionEditQueue>
Queues for region edit requests.
schema_metadata_manager: SchemaMetadataManagerRef
Database level metadata manager.
Implementations§
Source§impl<S> RegionWorkerLoop<S>
impl<S> RegionWorkerLoop<S>
pub(crate) async fn handle_alter_request( &mut self, region_id: RegionId, request: RegionAlterRequest, sender: OptionOutputTx, )
Sourcefn handle_alter_region_metadata(
&mut self,
region: Arc<MitoRegion>,
version: Arc<Version>,
request: RegionAlterRequest,
sender: OptionOutputTx,
)
fn handle_alter_region_metadata( &mut self, region: Arc<MitoRegion>, version: Arc<Version>, request: RegionAlterRequest, sender: OptionOutputTx, )
Handles region metadata changes.
Sourcefn handle_alter_region_options(
&mut self,
region: Arc<MitoRegion>,
version: Arc<Version>,
options: Vec<SetRegionOption>,
) -> Result<(), MetadataError>
fn handle_alter_region_options( &mut self, region: Arc<MitoRegion>, version: Arc<Version>, options: Vec<SetRegionOption>, ) -> Result<(), MetadataError>
Handles requests that changes region options, like TTL. It only affects memory state
since changes are persisted in the DatanodeTableValue
in metasrv.
Source§impl<S: LogStore> RegionWorkerLoop<S>
impl<S: LogStore> RegionWorkerLoop<S>
pub(crate) async fn handle_catchup_request( &mut self, region_id: RegionId, request: RegionCatchupRequest, ) -> Result<AffectedRows>
Sourcepub(crate) async fn reopen_region(
&mut self,
region: &Arc<MitoRegion>,
) -> Result<Arc<MitoRegion>>
pub(crate) async fn reopen_region( &mut self, region: &Arc<MitoRegion>, ) -> Result<Arc<MitoRegion>>
Reopens a region.
Source§impl<S> RegionWorkerLoop<S>
impl<S> RegionWorkerLoop<S>
pub(crate) async fn handle_close_request( &mut self, region_id: RegionId, ) -> Result<AffectedRows>
Source§impl<S> RegionWorkerLoop<S>
impl<S> RegionWorkerLoop<S>
Sourcepub(crate) async fn handle_compaction_request(
&mut self,
region_id: RegionId,
req: RegionCompactRequest,
sender: OptionOutputTx,
)
pub(crate) async fn handle_compaction_request( &mut self, region_id: RegionId, req: RegionCompactRequest, sender: OptionOutputTx, )
Handles compaction request submitted to region worker.
Sourcepub(crate) async fn handle_compaction_finished(
&mut self,
region_id: RegionId,
request: CompactionFinished,
)
pub(crate) async fn handle_compaction_finished( &mut self, region_id: RegionId, request: CompactionFinished, )
Handles compaction finished, update region version and manifest, deleted compacted files.
Sourcepub(crate) async fn handle_compaction_failure(&mut self, req: CompactionFailed)
pub(crate) async fn handle_compaction_failure(&mut self, req: CompactionFailed)
When compaction fails, we simply log the error.
Sourcepub(crate) async fn schedule_compaction(&mut self, region: &Arc<MitoRegion>)
pub(crate) async fn schedule_compaction(&mut self, region: &Arc<MitoRegion>)
Schedule compaction for the region if necessary.
Source§impl<S: LogStore> RegionWorkerLoop<S>
impl<S: LogStore> RegionWorkerLoop<S>
pub(crate) async fn handle_create_request( &mut self, region_id: RegionId, request: RegionCreateRequest, ) -> Result<AffectedRows>
Source§impl<S> RegionWorkerLoop<S>where
S: LogStore,
impl<S> RegionWorkerLoop<S>where
S: LogStore,
pub(crate) async fn handle_drop_request( &mut self, region_id: RegionId, ) -> Result<AffectedRows>
Source§impl<S> RegionWorkerLoop<S>
impl<S> RegionWorkerLoop<S>
Sourcepub(crate) async fn handle_flush_request(
&mut self,
region_id: RegionId,
request: RegionFlushRequest,
sender: OptionOutputTx,
)
pub(crate) async fn handle_flush_request( &mut self, region_id: RegionId, request: RegionFlushRequest, sender: OptionOutputTx, )
Handles manual flush request.
Sourcepub(crate) async fn handle_flush_failed(
&mut self,
region_id: RegionId,
request: FlushFailed,
)
pub(crate) async fn handle_flush_failed( &mut self, region_id: RegionId, request: FlushFailed, )
On region flush job failed.
Sourcepub(crate) fn maybe_flush_worker(&mut self)
pub(crate) fn maybe_flush_worker(&mut self)
Checks whether the engine reaches flush threshold. If so, finds regions in this worker to flush.
Sourcefn flush_regions_on_engine_full(&mut self) -> Result<()>
fn flush_regions_on_engine_full(&mut self) -> Result<()>
Finds some regions to flush to reduce write buffer usage.
Sourcepub(crate) fn flush_periodically(&mut self) -> Result<()>
pub(crate) fn flush_periodically(&mut self) -> Result<()>
Flushes regions periodically.
Sourcepub(crate) fn new_flush_task(
&self,
region: &Arc<MitoRegion>,
reason: FlushReason,
row_group_size: Option<usize>,
engine_config: Arc<MitoConfig>,
) -> RegionFlushTask
pub(crate) fn new_flush_task( &self, region: &Arc<MitoRegion>, reason: FlushReason, row_group_size: Option<usize>, engine_config: Arc<MitoConfig>, ) -> RegionFlushTask
Creates a flush task with specific reason
for the region
.
Source§impl<S: LogStore> RegionWorkerLoop<S>
impl<S: LogStore> RegionWorkerLoop<S>
Sourcepub(crate) async fn handle_flush_finished(
&mut self,
region_id: RegionId,
request: FlushFinished,
)
pub(crate) async fn handle_flush_finished( &mut self, region_id: RegionId, request: FlushFinished, )
On region flush job finished.
Source§impl<S: LogStore> RegionWorkerLoop<S>
impl<S: LogStore> RegionWorkerLoop<S>
Sourcepub(crate) async fn handle_manifest_region_change_result(
&mut self,
change_result: RegionChangeResult,
)
pub(crate) async fn handle_manifest_region_change_result( &mut self, change_result: RegionChangeResult, )
Handles region change result.
Sourcepub(crate) async fn handle_region_sync(&mut self, request: RegionSyncRequest)
pub(crate) async fn handle_region_sync(&mut self, request: RegionSyncRequest)
Handles region sync request.
Updates the manifest to at least the given version. Note: The installed version may be greater than the given version.
Source§impl<S> RegionWorkerLoop<S>
impl<S> RegionWorkerLoop<S>
Sourcepub(crate) async fn handle_region_edit(&mut self, request: RegionEditRequest)
pub(crate) async fn handle_region_edit(&mut self, request: RegionEditRequest)
Handles region edit request.
Sourcepub(crate) async fn handle_region_edit_result(
&mut self,
edit_result: RegionEditResult,
)
pub(crate) async fn handle_region_edit_result( &mut self, edit_result: RegionEditResult, )
Handles region edit result.
Sourcepub(crate) fn handle_manifest_truncate_action(
&self,
region: Arc<MitoRegion>,
truncate: RegionTruncate,
sender: OptionOutputTx,
)
pub(crate) fn handle_manifest_truncate_action( &self, region: Arc<MitoRegion>, truncate: RegionTruncate, sender: OptionOutputTx, )
Writes truncate action to the manifest and then applies it to the region in background.
Sourcepub(crate) fn handle_manifest_region_change(
&self,
region: Arc<MitoRegion>,
change: RegionChange,
sender: OptionOutputTx,
)
pub(crate) fn handle_manifest_region_change( &self, region: Arc<MitoRegion>, change: RegionChange, sender: OptionOutputTx, )
Writes region change action to the manifest and then applies it to the region in background.
Source§impl<S: LogStore> RegionWorkerLoop<S>
impl<S: LogStore> RegionWorkerLoop<S>
async fn check_and_cleanup_region( &self, region_id: RegionId, request: &RegionOpenRequest, ) -> Result<()>
pub(crate) async fn handle_open_request( &mut self, region_id: RegionId, request: RegionOpenRequest, wal_entry_receiver: Option<WalEntryReceiver>, sender: OptionOutputTx, )
Source§impl<S: LogStore> RegionWorkerLoop<S>
impl<S: LogStore> RegionWorkerLoop<S>
pub(crate) async fn handle_truncate_request( &mut self, region_id: RegionId, sender: OptionOutputTx, )
Sourcepub(crate) async fn handle_truncate_result(
&mut self,
truncate_result: TruncateResult,
)
pub(crate) async fn handle_truncate_result( &mut self, truncate_result: TruncateResult, )
Handles truncate result.
Source§impl<S: LogStore> RegionWorkerLoop<S>
impl<S: LogStore> RegionWorkerLoop<S>
Sourcepub(crate) async fn handle_write_requests(
&mut self,
write_requests: &mut Vec<SenderWriteRequest>,
allow_stall: bool,
)
pub(crate) async fn handle_write_requests( &mut self, write_requests: &mut Vec<SenderWriteRequest>, allow_stall: bool, )
Takes and handles all write requests.
Sourcepub(crate) async fn handle_stalled_requests(&mut self)
pub(crate) async fn handle_stalled_requests(&mut self)
Handles all stalled write requests.
Sourcepub(crate) fn reject_stalled_requests(&mut self)
pub(crate) fn reject_stalled_requests(&mut self)
Rejects all stalled requests.
Sourcepub(crate) fn reject_region_stalled_requests(&mut self, region_id: &RegionId)
pub(crate) fn reject_region_stalled_requests(&mut self, region_id: &RegionId)
Rejects a specific region’s stalled requests.
Sourcepub(crate) async fn handle_region_stalled_requests(
&mut self,
region_id: &RegionId,
)
pub(crate) async fn handle_region_stalled_requests( &mut self, region_id: &RegionId, )
Handles a specific region’s stalled requests.
Source§impl<S> RegionWorkerLoop<S>
impl<S> RegionWorkerLoop<S>
Sourcefn prepare_region_write_ctx(
&mut self,
write_requests: &mut Vec<SenderWriteRequest>,
) -> HashMap<RegionId, RegionWriteCtx>
fn prepare_region_write_ctx( &mut self, write_requests: &mut Vec<SenderWriteRequest>, ) -> HashMap<RegionId, RegionWriteCtx>
Validates and groups requests by region.
Sourcefn should_reject_write(&self) -> bool
fn should_reject_write(&self) -> bool
Returns true if the engine needs to reject some write requests.
Source§impl<S: LogStore> RegionWorkerLoop<S>
impl<S: LogStore> RegionWorkerLoop<S>
Sourceasync fn handle_requests(
&mut self,
write_requests: &mut Vec<SenderWriteRequest>,
ddl_requests: &mut Vec<SenderDdlRequest>,
general_requests: &mut Vec<WorkerRequest>,
)
async fn handle_requests( &mut self, write_requests: &mut Vec<SenderWriteRequest>, ddl_requests: &mut Vec<SenderDdlRequest>, general_requests: &mut Vec<WorkerRequest>, )
Dispatches and processes requests.
buffer
should be empty.
Sourceasync fn handle_ddl_requests(
&mut self,
ddl_requests: &mut Vec<SenderDdlRequest>,
)
async fn handle_ddl_requests( &mut self, ddl_requests: &mut Vec<SenderDdlRequest>, )
Takes and handles all ddl requests.
Sourcefn handle_periodical_tasks(&mut self)
fn handle_periodical_tasks(&mut self)
Handle periodical tasks such as region auto flush.
Sourceasync fn handle_background_notify(
&mut self,
region_id: RegionId,
notify: BackgroundNotify,
)
async fn handle_background_notify( &mut self, region_id: RegionId, notify: BackgroundNotify, )
Handles region background request
Sourceasync fn set_role_state_gracefully(
&mut self,
region_id: RegionId,
region_role_state: SettableRegionRoleState,
sender: Sender<SetRegionRoleStateResponse>,
)
async fn set_role_state_gracefully( &mut self, region_id: RegionId, region_role_state: SettableRegionRoleState, sender: Sender<SetRegionRoleStateResponse>, )
Handles set_region_role_gracefully
.
Source§impl<S> RegionWorkerLoop<S>
impl<S> RegionWorkerLoop<S>
Sourcefn notify_group(&mut self)
fn notify_group(&mut self)
Notifies the whole group that a flush job is finished so other workers can handle stalled requests.
Auto Trait Implementations§
impl<S> Freeze for RegionWorkerLoop<S>
impl<S> !RefUnwindSafe for RegionWorkerLoop<S>
impl<S> Send for RegionWorkerLoop<S>
impl<S> Sync for RegionWorkerLoop<S>
impl<S> Unpin for RegionWorkerLoop<S>
impl<S> !UnwindSafe for RegionWorkerLoop<S>
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
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, V> Convert<T> for Vwhere
V: Into<T>,
impl<T, V> Convert<T> for Vwhere
V: Into<T>,
fn convert(value: Self) -> T
fn convert_box(value: Box<Self>) -> Box<T>
fn convert_vec(value: Vec<Self>) -> Vec<T>
fn convert_vec_box(value: Vec<Box<Self>>) -> Vec<Box<T>>
fn convert_matrix(value: Vec<Vec<Self>>) -> Vec<Vec<T>>
fn convert_option(value: Option<Self>) -> Option<T>
fn convert_option_box(value: Option<Box<Self>>) -> Option<Box<T>>
fn convert_option_vec(value: Option<Vec<Self>>) -> Option<Vec<T>>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync 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 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> 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
§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<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.§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.