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: bool
Set to true
once initialization_complete
has been called.
read_only: bool
Whether 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: ComputeParameters
Compute configuration to apply to new instances.
peek_stash_persist_location: PersistLocation
The 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: ComputeControllerMetrics
The compute controller metrics.
now: NowFn
A 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 Instance
s.
response_tx: UnboundedSender<ComputeControllerResponse<T>>
Response sender that’s passed to new Instance
s.
introspection_rx: Option<UnboundedReceiver<(IntrospectionType, Vec<(Row, Diff)>)>>
Receiver for introspection updates produced by Instance
s.
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 Instance
s.
maintenance_ticker: Interval
Ticker for scheduling periodic maintenance work.
maintenance_scheduled: bool
Whether 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 clusters_hydrated(
&self,
exclude_collections: &BTreeSet<GlobalId>,
) -> bool
pub async fn clusters_hydrated( &self, exclude_collections: &BTreeSet<GlobalId>, ) -> bool
Returns true
if all non-transient, non-excluded collections on all clusters have 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 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>
impl<T> ComputeController<T>
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,
enable_ctp: bool,
) -> Result<(), ReplicaCreationError>
pub fn add_replica_to_instance( &mut self, instance_id: ComputeInstanceId, replica_id: ReplicaId, location: ClusterReplicaLocation, config: ComputeReplicaConfig, enable_ctp: bool, ) -> 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::Rows
indicating that the cancellation request did not take effect in time and the query succeeded. - A
PeekResponse::Canceled
affirming that the peek was canceled. - No
PeekResponse
at 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::Request
Source§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.