pub struct LocyProgramExec { /* private fields */ }Expand description
DataFusion ExecutionPlan that runs an entire Locy program.
Evaluates strata in dependency order, using FixpointExec for recursive
strata and direct subplan execution for non-recursive ones. After all
strata converge, dispatches commands.
Implementations§
Source§impl LocyProgramExec
impl LocyProgramExec
pub fn new( strata: Vec<LocyStratum>, commands: Vec<LocyCommand>, derived_scan_registry: Arc<DerivedScanRegistry>, plugin_registry: Arc<PluginRegistry>, graph_ctx: Arc<GraphExecutionContext>, session_ctx: Arc<RwLock<SessionContext>>, storage: Arc<StorageManager>, schema_info: Arc<UniSchema>, params: HashMap<String, Value>, output_schema: SchemaRef, max_iterations: usize, timeout: Duration, max_derived_bytes: usize, deterministic_best_by: bool, strict_probability_domain: bool, probability_epsilon: f64, exact_probability: bool, max_bdd_variables: usize, top_k_proofs: usize, ) -> Self
use new_with_semiring_classifiers_and_cache (or the lighter new_with_semiring_and_classifiers / new_with_semiring) — this legacy ctor defaults the semiring to AddMultProb and ships no classifier registry. To be removed after C0 Stage 2.
Sourcepub fn new_with_semiring(
strata: Vec<LocyStratum>,
commands: Vec<LocyCommand>,
derived_scan_registry: Arc<DerivedScanRegistry>,
plugin_registry: Arc<PluginRegistry>,
graph_ctx: Arc<GraphExecutionContext>,
session_ctx: Arc<RwLock<SessionContext>>,
storage: Arc<StorageManager>,
schema_info: Arc<UniSchema>,
params: HashMap<String, Value>,
output_schema: SchemaRef,
max_iterations: usize,
timeout: Duration,
max_derived_bytes: usize,
deterministic_best_by: bool,
strict_probability_domain: bool,
probability_epsilon: f64,
exact_probability: bool,
max_bdd_variables: usize,
top_k_proofs: usize,
semiring_kind: SemiringKind,
) -> Self
pub fn new_with_semiring( strata: Vec<LocyStratum>, commands: Vec<LocyCommand>, derived_scan_registry: Arc<DerivedScanRegistry>, plugin_registry: Arc<PluginRegistry>, graph_ctx: Arc<GraphExecutionContext>, session_ctx: Arc<RwLock<SessionContext>>, storage: Arc<StorageManager>, schema_info: Arc<UniSchema>, params: HashMap<String, Value>, output_schema: SchemaRef, max_iterations: usize, timeout: Duration, max_derived_bytes: usize, deterministic_best_by: bool, strict_probability_domain: bool, probability_epsilon: f64, exact_probability: bool, max_bdd_variables: usize, top_k_proofs: usize, semiring_kind: SemiringKind, ) -> Self
Constructor accepting an explicit semiring. Empty classifier
registry; for the full Slice 3 variant call
Self::new_with_semiring_and_classifiers.
Sourcepub fn new_with_semiring_and_classifiers(
strata: Vec<LocyStratum>,
commands: Vec<LocyCommand>,
derived_scan_registry: Arc<DerivedScanRegistry>,
plugin_registry: Arc<PluginRegistry>,
graph_ctx: Arc<GraphExecutionContext>,
session_ctx: Arc<RwLock<SessionContext>>,
storage: Arc<StorageManager>,
schema_info: Arc<UniSchema>,
params: HashMap<String, Value>,
output_schema: SchemaRef,
max_iterations: usize,
timeout: Duration,
max_derived_bytes: usize,
deterministic_best_by: bool,
strict_probability_domain: bool,
probability_epsilon: f64,
exact_probability: bool,
max_bdd_variables: usize,
top_k_proofs: usize,
semiring_kind: SemiringKind,
classifier_registry: Arc<ClassifierRegistry>,
) -> Self
pub fn new_with_semiring_and_classifiers( strata: Vec<LocyStratum>, commands: Vec<LocyCommand>, derived_scan_registry: Arc<DerivedScanRegistry>, plugin_registry: Arc<PluginRegistry>, graph_ctx: Arc<GraphExecutionContext>, session_ctx: Arc<RwLock<SessionContext>>, storage: Arc<StorageManager>, schema_info: Arc<UniSchema>, params: HashMap<String, Value>, output_schema: SchemaRef, max_iterations: usize, timeout: Duration, max_derived_bytes: usize, deterministic_best_by: bool, strict_probability_domain: bool, probability_epsilon: f64, exact_probability: bool, max_bdd_variables: usize, top_k_proofs: usize, semiring_kind: SemiringKind, classifier_registry: Arc<ClassifierRegistry>, ) -> Self
Phase B Slice 3 entry: accepts both the semiring kind and the runtime classifier registry.
Sourcepub fn new_with_semiring_classifiers_and_cache(
strata: Vec<LocyStratum>,
commands: Vec<LocyCommand>,
derived_scan_registry: Arc<DerivedScanRegistry>,
plugin_registry: Arc<PluginRegistry>,
graph_ctx: Arc<GraphExecutionContext>,
session_ctx: Arc<RwLock<SessionContext>>,
storage: Arc<StorageManager>,
schema_info: Arc<UniSchema>,
params: HashMap<String, Value>,
output_schema: SchemaRef,
max_iterations: usize,
timeout: Duration,
max_derived_bytes: usize,
deterministic_best_by: bool,
strict_probability_domain: bool,
probability_epsilon: f64,
exact_probability: bool,
max_bdd_variables: usize,
top_k_proofs: usize,
semiring_kind: SemiringKind,
classifier_registry: Arc<ClassifierRegistry>,
classifier_cache: Option<Arc<ModelInvocationCache>>,
classifier_provenance_store: Option<Arc<NeuralProvenanceStore>>,
) -> Self
pub fn new_with_semiring_classifiers_and_cache( strata: Vec<LocyStratum>, commands: Vec<LocyCommand>, derived_scan_registry: Arc<DerivedScanRegistry>, plugin_registry: Arc<PluginRegistry>, graph_ctx: Arc<GraphExecutionContext>, session_ctx: Arc<RwLock<SessionContext>>, storage: Arc<StorageManager>, schema_info: Arc<UniSchema>, params: HashMap<String, Value>, output_schema: SchemaRef, max_iterations: usize, timeout: Duration, max_derived_bytes: usize, deterministic_best_by: bool, strict_probability_domain: bool, probability_epsilon: f64, exact_probability: bool, max_bdd_variables: usize, top_k_proofs: usize, semiring_kind: SemiringKind, classifier_registry: Arc<ClassifierRegistry>, classifier_cache: Option<Arc<ModelInvocationCache>>, classifier_provenance_store: Option<Arc<NeuralProvenanceStore>>, ) -> Self
Phase B follow-up: full constructor accepting the optional
memoization cache. Existing callers default to None (no
cache); impl_locy.rs threads LocyConfig.classifier_cache
here.
Sourcepub fn derived_store_slot(&self) -> Arc<StdRwLock<Option<DerivedStore>>> ⓘ
pub fn derived_store_slot(&self) -> Arc<StdRwLock<Option<DerivedStore>>> ⓘ
Returns a shared handle to the derived store slot.
After execution completes, the slot contains the DerivedStore with all
converged facts. Read it with slot.read().unwrap().
Sourcepub fn set_derivation_tracker(&self, tracker: Arc<ProvenanceStore>)
pub fn set_derivation_tracker(&self, tracker: Arc<ProvenanceStore>)
Inject a ProvenanceStore to record provenance during fixpoint iteration.
Must be called before execute() is invoked (i.e., before DataFusion runs
the physical plan). Uses interior mutability so it works through &self.
Sourcepub fn iteration_counts_slot(&self) -> Arc<StdRwLock<HashMap<String, usize>>> ⓘ
pub fn iteration_counts_slot(&self) -> Arc<StdRwLock<HashMap<String, usize>>> ⓘ
Returns the shared iteration counts slot.
After execution, the slot contains per-rule iteration counts from the
most recent fixpoint convergence. Sum the values for total_iterations.
Sourcepub fn peak_memory_slot(&self) -> Arc<StdRwLock<usize>> ⓘ
pub fn peak_memory_slot(&self) -> Arc<StdRwLock<usize>> ⓘ
Returns the shared peak memory slot.
After execution, the slot contains the peak byte count of derived facts
across all strata. Read it with slot.read().unwrap().
Sourcepub fn warnings_slot(&self) -> Arc<StdRwLock<Vec<RuntimeWarning>>> ⓘ
pub fn warnings_slot(&self) -> Arc<StdRwLock<Vec<RuntimeWarning>>> ⓘ
Returns the shared runtime warnings slot.
After execution, the slot contains warnings collected during fixpoint iteration (e.g. shared probabilistic dependencies).
Sourcepub fn approximate_slot(&self) -> Arc<StdRwLock<HashMap<String, Vec<String>>>> ⓘ
pub fn approximate_slot(&self) -> Arc<StdRwLock<HashMap<String, Vec<String>>>> ⓘ
Returns the shared approximate groups slot.
After execution, the slot contains rule→key group descriptions for groups where BDD computation fell back to independence mode.
Sourcepub fn command_results_slot(
&self,
) -> Arc<StdRwLock<Vec<(usize, CommandResult)>>> ⓘ
pub fn command_results_slot( &self, ) -> Arc<StdRwLock<Vec<(usize, CommandResult)>>> ⓘ
Returns the shared command results slot.
After execution, the slot contains (command_index, CommandResult) pairs
for commands that were executed inline by run_program() (QUERY, Cypher).
Sourcepub fn timeout_flag(&self) -> Arc<AtomicU8> ⓘ
pub fn timeout_flag(&self) -> Arc<AtomicU8> ⓘ
Returns the shared interruption signal.
After execution, a non-zero value means the evaluation was cut short
(timeout or iteration limit) and the derived store holds partial results.
Prefer LocyProgramExec::incomplete_slot for the decoded diagnostics.
Sourcepub fn incomplete_slot(&self) -> Arc<StdRwLock<Option<LocyIncomplete>>> ⓘ
pub fn incomplete_slot(&self) -> Arc<StdRwLock<Option<LocyIncomplete>>> ⓘ
Returns the shared incomplete-evaluation diagnostics slot.
After execution, Some(detail) means evaluation stopped before
completing; detail names the skipped / unsound-complement rules and the
stop reason. None for a complete run.
Trait Implementations§
Source§impl Debug for LocyProgramExec
impl Debug for LocyProgramExec
Source§impl DisplayAs for LocyProgramExec
impl DisplayAs for LocyProgramExec
Source§impl ExecutionPlan for LocyProgramExec
impl ExecutionPlan for LocyProgramExec
Source§fn as_any(&self) -> &dyn Any
fn as_any(&self) -> &dyn Any
Any so that it can be
downcast to a specific implementation.Source§fn properties(&self) -> &Arc<PlanProperties> ⓘ
fn properties(&self) -> &Arc<PlanProperties> ⓘ
ExecutionPlan, such as output
ordering(s), partitioning information etc. Read moreSource§fn children(&self) -> Vec<&Arc<dyn ExecutionPlan>>
fn children(&self) -> Vec<&Arc<dyn ExecutionPlan>>
ExecutionPlans that act as inputs to this plan.
The returned list will be empty for leaf nodes such as scans, will contain
a single value for unary nodes, or two values for binary nodes (such as
joins).Source§fn with_new_children(
self: Arc<Self>,
children: Vec<Arc<dyn ExecutionPlan>>,
) -> DFResult<Arc<dyn ExecutionPlan>>
fn with_new_children( self: Arc<Self>, children: Vec<Arc<dyn ExecutionPlan>>, ) -> DFResult<Arc<dyn ExecutionPlan>>
ExecutionPlan where all existing children were replaced
by the children, in orderSource§fn execute(
&self,
partition: usize,
_context: Arc<TaskContext>,
) -> DFResult<SendableRecordBatchStream>
fn execute( &self, partition: usize, _context: Arc<TaskContext>, ) -> DFResult<SendableRecordBatchStream>
Source§fn metrics(&self) -> Option<MetricsSet>
fn metrics(&self) -> Option<MetricsSet>
Metrics for this
ExecutionPlan. If no Metrics are available, return None. Read moreSource§fn static_name() -> &'static strwhere
Self: Sized,
fn static_name() -> &'static strwhere
Self: Sized,
name but can be called without an instance.Source§fn check_invariants(&self, check: InvariantLevel) -> Result<(), DataFusionError>
fn check_invariants(&self, check: InvariantLevel) -> Result<(), DataFusionError>
Source§fn required_input_distribution(&self) -> Vec<Distribution>
fn required_input_distribution(&self) -> Vec<Distribution>
ExecutionPlan, By default it’s [Distribution::UnspecifiedDistribution] for each child,Source§fn required_input_ordering(&self) -> Vec<Option<OrderingRequirements>>
fn required_input_ordering(&self) -> Vec<Option<OrderingRequirements>>
ExecutionPlan. Read moreSource§fn maintains_input_order(&self) -> Vec<bool>
fn maintains_input_order(&self) -> Vec<bool>
false if this ExecutionPlan’s implementation may reorder
rows within or between partitions. Read moreSource§fn benefits_from_input_partitioning(&self) -> Vec<bool>
fn benefits_from_input_partitioning(&self) -> Vec<bool>
ExecutionPlan benefits from increased
parallelization at its input for each child. Read moreSource§fn reset_state(
self: Arc<Self>,
) -> Result<Arc<dyn ExecutionPlan>, DataFusionError>
fn reset_state( self: Arc<Self>, ) -> Result<Arc<dyn ExecutionPlan>, DataFusionError>
ExecutionPlan. Read moreSource§fn repartitioned(
&self,
_target_partitions: usize,
_config: &ConfigOptions,
) -> Result<Option<Arc<dyn ExecutionPlan>>, DataFusionError>
fn repartitioned( &self, _target_partitions: usize, _config: &ConfigOptions, ) -> Result<Option<Arc<dyn ExecutionPlan>>, DataFusionError>
ExecutionPlan to
produce target_partitions partitions. Read moreSource§fn partition_statistics(
&self,
partition: Option<usize>,
) -> Result<Statistics, DataFusionError>
fn partition_statistics( &self, partition: Option<usize>, ) -> Result<Statistics, DataFusionError>
ExecutionPlan node.
If statistics are not available, should return Statistics::new_unknown
(the default), not an error.
If partition is None, it returns statistics for the entire plan.Source§fn supports_limit_pushdown(&self) -> bool
fn supports_limit_pushdown(&self) -> bool
Source§fn with_fetch(&self, _limit: Option<usize>) -> Option<Arc<dyn ExecutionPlan>>
fn with_fetch(&self, _limit: Option<usize>) -> Option<Arc<dyn ExecutionPlan>>
ExecutionPlan node, if it supports
fetch limits. Returns None otherwise.Source§fn fetch(&self) -> Option<usize>
fn fetch(&self) -> Option<usize>
None means there is no fetch.Source§fn cardinality_effect(&self) -> CardinalityEffect
fn cardinality_effect(&self) -> CardinalityEffect
Source§fn try_swapping_with_projection(
&self,
_projection: &ProjectionExec,
) -> Result<Option<Arc<dyn ExecutionPlan>>, DataFusionError>
fn try_swapping_with_projection( &self, _projection: &ProjectionExec, ) -> Result<Option<Arc<dyn ExecutionPlan>>, DataFusionError>
ExecutionPlan. Read moreSource§fn gather_filters_for_pushdown(
&self,
_phase: FilterPushdownPhase,
parent_filters: Vec<Arc<dyn PhysicalExpr>>,
_config: &ConfigOptions,
) -> Result<FilterDescription, DataFusionError>
fn gather_filters_for_pushdown( &self, _phase: FilterPushdownPhase, parent_filters: Vec<Arc<dyn PhysicalExpr>>, _config: &ConfigOptions, ) -> Result<FilterDescription, DataFusionError>
ExecutionPlan::gather_filters_for_pushdown: Read moreSource§fn handle_child_pushdown_result(
&self,
_phase: FilterPushdownPhase,
child_pushdown_result: ChildPushdownResult,
_config: &ConfigOptions,
) -> Result<FilterPushdownPropagation<Arc<dyn ExecutionPlan>>, DataFusionError>
fn handle_child_pushdown_result( &self, _phase: FilterPushdownPhase, child_pushdown_result: ChildPushdownResult, _config: &ConfigOptions, ) -> Result<FilterPushdownPropagation<Arc<dyn ExecutionPlan>>, DataFusionError>
Source§fn with_new_state(
&self,
_state: Arc<dyn Any + Sync + Send>,
) -> Option<Arc<dyn ExecutionPlan>>
fn with_new_state( &self, _state: Arc<dyn Any + Sync + Send>, ) -> Option<Arc<dyn ExecutionPlan>>
Source§fn try_pushdown_sort(
&self,
_order: &[PhysicalSortExpr],
) -> Result<SortOrderPushdownResult<Arc<dyn ExecutionPlan>>, DataFusionError>
fn try_pushdown_sort( &self, _order: &[PhysicalSortExpr], ) -> Result<SortOrderPushdownResult<Arc<dyn ExecutionPlan>>, DataFusionError>
Source§fn with_preserve_order(
&self,
_preserve_order: bool,
) -> Option<Arc<dyn ExecutionPlan>>
fn with_preserve_order( &self, _preserve_order: bool, ) -> Option<Arc<dyn ExecutionPlan>>
ExecutionPlan that is aware of order-sensitivity. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for LocyProgramExec
impl !UnwindSafe for LocyProgramExec
impl Freeze for LocyProgramExec
impl Send for LocyProgramExec
impl Sync for LocyProgramExec
impl Unpin for LocyProgramExec
impl UnsafeUnpin for LocyProgramExec
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> ErasedDestructor for Twhere
T: 'static,
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> 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> 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> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
impl<T> MaybeSend for Twhere
T: Send,
impl<T> MaybeSend for Twhere
T: Send,
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.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.impl<T> PluginState for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
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.