pub struct ComputeController<T: ComputeControllerTimestamp> {Show 19 fields
instances: BTreeMap<ComputeInstanceId, InstanceState<T>>,
instance_workload_classes: Arc<Mutex<BTreeMap<ComputeInstanceId, Option<String>>>>,
build_info: &'static BuildInfo,
storage_collections: Arc<dyn StorageCollections<Timestamp = T> + Send + Sync>,
initialized: bool,
read_only: bool,
config: ComputeParameters,
peek_stash_persist_location: PersistLocation,
stashed_response: Option<ComputeControllerResponse<T>>,
metrics: ComputeControllerMetrics,
now: NowFn,
wallclock_lag: WallclockLagFn<T>,
dyncfg: Arc<ConfigSet>,
response_rx: UnboundedReceiver<ComputeControllerResponse<T>>,
response_tx: UnboundedSender<ComputeControllerResponse<T>>,
introspection_rx: Option<UnboundedReceiver<(IntrospectionType, Vec<(Row, Diff)>)>>,
introspection_tx: UnboundedSender<(IntrospectionType, Vec<(Row, Diff)>)>,
maintenance_ticker: Interval,
maintenance_scheduled: bool,
}Expand description
A controller for the compute layer.
Fields§
§instances: BTreeMap<ComputeInstanceId, InstanceState<T>>§instance_workload_classes: Arc<Mutex<BTreeMap<ComputeInstanceId, Option<String>>>>A map from an instance ID to an arbitrary string that describes the
class of the workload that compute instance is running (e.g.,
production or staging).
build_info: &'static BuildInfo§storage_collections: Arc<dyn StorageCollections<Timestamp = T> + Send + Sync>A handle providing access to storage collections.
initialized: boolSet to true once initialization_complete has been called.
read_only: boolWhether or not this controller is in read-only mode.
When in read-only mode, neither this controller nor the instances controlled by it are allowed to affect changes to external systems (largely persist).
config: ComputeParametersCompute configuration to apply to new instances.
peek_stash_persist_location: PersistLocationThe persist location where we can stash large peek results.
stashed_response: Option<ComputeControllerResponse<T>>A controller response to be returned on the next call to ComputeController::process.
metrics: ComputeControllerMetricsThe compute controller metrics.
now: NowFnA function that produces the current wallclock time.
wallclock_lag: WallclockLagFn<T>A function that computes the lag between the given time and wallclock time.
dyncfg: Arc<ConfigSet>Dynamic system configuration.
Updated through ComputeController::update_configuration calls and shared with all
subcomponents of the compute controller.
response_rx: UnboundedReceiver<ComputeControllerResponse<T>>Receiver for responses produced by Instances.
response_tx: UnboundedSender<ComputeControllerResponse<T>>Response sender that’s passed to new Instances.
introspection_rx: Option<UnboundedReceiver<(IntrospectionType, Vec<(Row, Diff)>)>>Receiver for introspection updates produced by Instances.
When ComputeController::start_introspection_sink is first called, this receiver is
passed to the introspection sink task.
introspection_tx: UnboundedSender<(IntrospectionType, Vec<(Row, Diff)>)>Introspection updates sender that’s passed to new Instances.
maintenance_ticker: IntervalTicker for scheduling periodic maintenance work.
maintenance_scheduled: boolWhether maintenance work was scheduled.
Implementations§
Source§impl<T: ComputeControllerTimestamp> ComputeController<T>
impl<T: ComputeControllerTimestamp> ComputeController<T>
Sourcepub fn new(
build_info: &'static BuildInfo,
storage_collections: Arc<dyn StorageCollections<Timestamp = T> + Send + Sync>,
read_only: bool,
metrics_registry: &MetricsRegistry,
peek_stash_persist_location: PersistLocation,
controller_metrics: ControllerMetrics,
now: NowFn,
wallclock_lag: WallclockLagFn<T>,
) -> Self
pub fn new( build_info: &'static BuildInfo, storage_collections: Arc<dyn StorageCollections<Timestamp = T> + Send + Sync>, read_only: bool, metrics_registry: &MetricsRegistry, peek_stash_persist_location: PersistLocation, controller_metrics: ControllerMetrics, now: NowFn, wallclock_lag: WallclockLagFn<T>, ) -> Self
Construct a new ComputeController.
Sourcepub fn start_introspection_sink(
&mut self,
storage_controller: &dyn StorageController<Timestamp = T>,
)
pub fn start_introspection_sink( &mut self, storage_controller: &dyn StorageController<Timestamp = T>, )
Start sinking the compute controller’s introspection data into storage.
This method should be called once the introspection collections have been registered with the storage controller. It will panic if invoked earlier than that.
Sourcepub fn instance_exists(&self, id: ComputeInstanceId) -> bool
pub fn instance_exists(&self, id: ComputeInstanceId) -> bool
TODO(database-issues#7533): Add documentation.
Sourcefn instance(
&self,
id: ComputeInstanceId,
) -> Result<&InstanceState<T>, InstanceMissing>
fn instance( &self, id: ComputeInstanceId, ) -> Result<&InstanceState<T>, InstanceMissing>
Return a reference to the indicated compute instance.
Sourcefn instance_mut(
&mut self,
id: ComputeInstanceId,
) -> Result<&mut InstanceState<T>, InstanceMissing>
fn instance_mut( &mut self, id: ComputeInstanceId, ) -> Result<&mut InstanceState<T>, InstanceMissing>
Return a mutable reference to the indicated compute instance.
Sourcepub fn collection_ids(
&self,
instance_id: ComputeInstanceId,
) -> Result<impl Iterator<Item = GlobalId> + '_, InstanceMissing>
pub fn collection_ids( &self, instance_id: ComputeInstanceId, ) -> Result<impl Iterator<Item = GlobalId> + '_, InstanceMissing>
List the IDs of all collections in the identified compute instance.
Sourcepub fn collection_frontiers(
&self,
collection_id: GlobalId,
instance_id: Option<ComputeInstanceId>,
) -> Result<CollectionFrontiers<T>, CollectionLookupError>
pub fn collection_frontiers( &self, collection_id: GlobalId, instance_id: Option<ComputeInstanceId>, ) -> Result<CollectionFrontiers<T>, CollectionLookupError>
Return the frontiers of the indicated collection.
If an instance_id is provided, the collection is assumed to be installed on that
instance. Otherwise all available instances are searched.
Sourcepub fn collection_reverse_dependencies(
&self,
instance_id: ComputeInstanceId,
id: GlobalId,
) -> Result<impl Iterator<Item = GlobalId> + '_, InstanceMissing>
pub fn collection_reverse_dependencies( &self, instance_id: ComputeInstanceId, id: GlobalId, ) -> Result<impl Iterator<Item = GlobalId> + '_, InstanceMissing>
List compute collections that depend on the given collection.
Sourcepub async fn collection_hydrated(
&self,
instance_id: ComputeInstanceId,
collection_id: GlobalId,
) -> Result<bool, Error>
pub async fn collection_hydrated( &self, instance_id: ComputeInstanceId, collection_id: GlobalId, ) -> Result<bool, Error>
Returns true iff the given collection has been hydrated.
For this check, zero-replica clusters are always considered hydrated. Their collections would never normally be considered hydrated but it’s clearly intentional that they have no replicas.
Sourcepub fn collections_hydrated_for_replicas(
&self,
instance_id: ComputeInstanceId,
replicas: Vec<ReplicaId>,
exclude_collections: BTreeSet<GlobalId>,
) -> Result<Receiver<bool>, Error>
pub fn collections_hydrated_for_replicas( &self, instance_id: ComputeInstanceId, replicas: Vec<ReplicaId>, exclude_collections: BTreeSet<GlobalId>, ) -> Result<Receiver<bool>, Error>
Returns true if all non-transient, non-excluded collections are hydrated on any of the
provided replicas.
For this check, zero-replica clusters are always considered hydrated. Their collections would never normally be considered hydrated but it’s clearly intentional that they have no replicas.
Source§impl<T> ComputeController<T>where
T: ComputeControllerTimestamp,
impl<T> ComputeController<T>where
T: ComputeControllerTimestamp,
Sourcepub fn create_instance(
&mut self,
id: ComputeInstanceId,
arranged_logs: BTreeMap<LogVariant, GlobalId>,
workload_class: Option<String>,
) -> Result<(), InstanceExists>
pub fn create_instance( &mut self, id: ComputeInstanceId, arranged_logs: BTreeMap<LogVariant, GlobalId>, workload_class: Option<String>, ) -> Result<(), InstanceExists>
Create a compute instance.
Sourcepub fn update_instance_workload_class(
&mut self,
id: ComputeInstanceId,
workload_class: Option<String>,
) -> Result<(), InstanceMissing>
pub fn update_instance_workload_class( &mut self, id: ComputeInstanceId, workload_class: Option<String>, ) -> Result<(), InstanceMissing>
Updates a compute instance’s workload class.
Sourcepub fn drop_instance(&mut self, id: ComputeInstanceId)
pub fn drop_instance(&mut self, id: ComputeInstanceId)
Sourcepub fn update_configuration(&mut self, config_params: ComputeParameters)
pub fn update_configuration(&mut self, config_params: ComputeParameters)
Update compute configuration.
Sourcepub fn initialization_complete(&mut self)
pub fn initialization_complete(&mut self)
Mark the end of any initialization commands.
The implementor may wait for this method to be called before implementing prior commands, and so it is important for a user to invoke this method as soon as it is comfortable. This method can be invoked immediately, at the potential expense of performance.
Sourcepub async fn ready(&mut self)
pub async fn ready(&mut self)
Wait until the controller is ready to do some processing.
This method may block for an arbitrarily long time.
When the method returns, the caller should call ComputeController::process.
This method is cancellation safe.
Sourcepub fn add_replica_to_instance(
&mut self,
instance_id: ComputeInstanceId,
replica_id: ReplicaId,
location: ClusterReplicaLocation,
config: ComputeReplicaConfig,
) -> Result<(), ReplicaCreationError>
pub fn add_replica_to_instance( &mut self, instance_id: ComputeInstanceId, replica_id: ReplicaId, location: ClusterReplicaLocation, config: ComputeReplicaConfig, ) -> Result<(), ReplicaCreationError>
Adds replicas of an instance.
Sourcepub fn drop_replica(
&mut self,
instance_id: ComputeInstanceId,
replica_id: ReplicaId,
) -> Result<(), ReplicaDropError>
pub fn drop_replica( &mut self, instance_id: ComputeInstanceId, replica_id: ReplicaId, ) -> Result<(), ReplicaDropError>
Removes a replica from an instance, including its service in the orchestrator.
Sourcepub fn create_dataflow(
&mut self,
instance_id: ComputeInstanceId,
dataflow: DataflowDescription<Plan<T>, (), T>,
subscribe_target_replica: Option<ReplicaId>,
) -> Result<(), DataflowCreationError>
pub fn create_dataflow( &mut self, instance_id: ComputeInstanceId, dataflow: DataflowDescription<Plan<T>, (), T>, subscribe_target_replica: Option<ReplicaId>, ) -> Result<(), DataflowCreationError>
Creates the described dataflow and initializes state for its output.
If a subscribe_target_replica is given, any subscribes exported by the dataflow are
configured to target that replica, i.e., only subscribe responses sent by that replica are
considered.
Sourcepub fn drop_collections(
&mut self,
instance_id: ComputeInstanceId,
collection_ids: Vec<GlobalId>,
) -> Result<(), CollectionUpdateError>
pub fn drop_collections( &mut self, instance_id: ComputeInstanceId, collection_ids: Vec<GlobalId>, ) -> Result<(), CollectionUpdateError>
Drop the read capability for the given collections and allow their resources to be reclaimed.
Sourcepub fn peek(
&self,
instance_id: ComputeInstanceId,
peek_target: PeekTarget,
literal_constraints: Option<Vec<Row>>,
uuid: Uuid,
timestamp: T,
result_desc: RelationDesc,
finishing: RowSetFinishing,
map_filter_project: SafeMfpPlan,
target_replica: Option<ReplicaId>,
peek_response_tx: Sender<PeekResponse>,
) -> Result<(), PeekError>
pub fn peek( &self, instance_id: ComputeInstanceId, peek_target: PeekTarget, literal_constraints: Option<Vec<Row>>, uuid: Uuid, timestamp: T, result_desc: RelationDesc, finishing: RowSetFinishing, map_filter_project: SafeMfpPlan, target_replica: Option<ReplicaId>, peek_response_tx: Sender<PeekResponse>, ) -> Result<(), PeekError>
Initiate a peek request for the contents of the given collection at timestamp.
Sourcepub fn cancel_peek(
&self,
instance_id: ComputeInstanceId,
uuid: Uuid,
reason: PeekResponse,
) -> Result<(), InstanceMissing>
pub fn cancel_peek( &self, instance_id: ComputeInstanceId, uuid: Uuid, reason: PeekResponse, ) -> Result<(), InstanceMissing>
Cancel an existing peek request.
Canceling a peek is best effort. The caller may see any of the following after canceling a peek request:
- A
PeekResponse::Rowsindicating that the cancellation request did not take effect in time and the query succeeded. - A
PeekResponse::Canceledaffirming that the peek was canceled. - No
PeekResponseat all.
Sourcepub fn set_read_policy(
&self,
instance_id: ComputeInstanceId,
policies: Vec<(GlobalId, ReadPolicy<T>)>,
) -> Result<(), ReadPolicyError>
pub fn set_read_policy( &self, instance_id: ComputeInstanceId, policies: Vec<(GlobalId, ReadPolicy<T>)>, ) -> Result<(), ReadPolicyError>
Assign a read policy to specific identifiers.
The policies are assigned in the order presented, and repeated identifiers should conclude with the last policy. Changing a policy will immediately downgrade the read capability if appropriate, but it will not “recover” the read capability if the prior capability is already ahead of it.
Identifiers not present in policies retain their existing read policies.
It is an error to attempt to set a read policy for a collection that is not readable in the context of compute. At this time, only indexes are readable compute collections.
Sourcepub fn acquire_read_hold(
&self,
instance_id: ComputeInstanceId,
collection_id: GlobalId,
) -> Result<ReadHold<T>, CollectionUpdateError>
pub fn acquire_read_hold( &self, instance_id: ComputeInstanceId, collection_id: GlobalId, ) -> Result<ReadHold<T>, CollectionUpdateError>
Acquires a ReadHold for the identified compute collection.
Sourcefn determine_time_dependence(
&self,
instance_id: ComputeInstanceId,
dataflow: &DataflowDescription<Plan<T>, (), T>,
) -> Result<Option<TimeDependence>, TimeDependenceError>
fn determine_time_dependence( &self, instance_id: ComputeInstanceId, dataflow: &DataflowDescription<Plan<T>, (), T>, ) -> Result<Option<TimeDependence>, TimeDependenceError>
Determine the time dependence for a dataflow.
Sourcepub fn process(&mut self) -> Option<ComputeControllerResponse<T>>
pub fn process(&mut self) -> Option<ComputeControllerResponse<T>>
Processes the work queued by ComputeController::ready.
fn maintain(&mut self)
Auto Trait Implementations§
impl<T> !Freeze for ComputeController<T>
impl<T> !RefUnwindSafe for ComputeController<T>
impl<T> Send for ComputeController<T>
impl<T> Sync for ComputeController<T>
impl<T> Unpin for ComputeController<T>where
T: Unpin,
impl<T> !UnwindSafe for ComputeController<T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for T
impl<T> Downcast for T
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> 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::RequestSource§impl<T, U> OverrideFrom<Option<&T>> for Uwhere
U: OverrideFrom<T>,
impl<T, U> OverrideFrom<Option<&T>> for Uwhere
U: OverrideFrom<T>,
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
Source§fn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
RustType::from_proto.Source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
RustType::into_proto.Source§impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
Source§fn plus_equals(&mut self, rhs: &&'a S)
fn plus_equals(&mut self, rhs: &&'a S)
std::ops::AddAssign, for types that do not implement AddAssign.Source§impl<T> ServiceExt for T
impl<T> ServiceExt for T
Source§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,
Source§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
Source§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
Source§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
Source§fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
fn follow_redirects(self) -> FollowRedirect<Self>where
Self: 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.