pub struct HttpEnvironmentStore { /* private fields */ }Expand description
Remote HTTP-backed implementation of EnvironmentMutations.
See the module-level doc for the route table and design rationale.
Implementations§
Source§impl HttpEnvironmentStore
impl HttpEnvironmentStore
Sourcepub fn new(base_url: Url, auth: AuthMethod) -> Result<Self, ConstructionError>
pub fn new(base_url: Url, auth: AuthMethod) -> Result<Self, ConstructionError>
Build with the default reqwest::blocking::Client.
Returns ConstructionError::InsecureTransport if auth is
AuthMethod::Bearer and base_url is http:// to a non-loopback
host.
Sourcepub fn with_client(
client: Client,
base_url: Url,
auth: AuthMethod,
) -> Result<Self, ConstructionError>
pub fn with_client( client: Client, base_url: Url, auth: AuthMethod, ) -> Result<Self, ConstructionError>
Build with a caller-supplied client (custom timeouts, TLS config, etc.).
Returns ConstructionError::InsecureTransport if auth is
AuthMethod::Bearer and base_url is http:// to a non-loopback
host.
Sourcepub fn create_backup(
&self,
env_id: &EnvId,
idempotency_key: &IdempotencyKey,
) -> Result<BackupManifest, StoreError>
pub fn create_backup( &self, env_id: &EnvId, idempotency_key: &IdempotencyKey, ) -> Result<BackupManifest, StoreError>
POST /environments/{env_id}/backups — snapshot the environment’s
stored state server-side; returns the contract’s manifest.
Sourcepub fn list_backups(
&self,
env_id: &EnvId,
) -> Result<Vec<BackupManifest>, StoreError>
pub fn list_backups( &self, env_id: &EnvId, ) -> Result<Vec<BackupManifest>, StoreError>
GET /environments/{env_id}/backups — list backup manifests,
oldest first.
Sourcepub fn delete_backup(
&self,
env_id: &EnvId,
backup_id: &str,
idempotency_key: &IdempotencyKey,
) -> Result<(), StoreError>
pub fn delete_backup( &self, env_id: &EnvId, backup_id: &str, idempotency_key: &IdempotencyKey, ) -> Result<(), StoreError>
DELETE /environments/{env_id}/backups/{backup_id} — drop one
backup (the server’s per-env backup store is bounded; at the cap,
create_backup refuses until old ones are deleted).
Sourcepub fn restore(
&self,
env_id: &EnvId,
request: &RestoreRequest,
idempotency_key: &IdempotencyKey,
) -> Result<RestoreOutcome, StoreError>
pub fn restore( &self, env_id: &EnvId, request: &RestoreRequest, idempotency_key: &IdempotencyKey, ) -> Result<RestoreOutcome, StoreError>
POST /environments/{env_id}/restore — restore the environment
from a named backup. request.precondition MUST pin prior state
(the server answers 428 otherwise; a stale pin is a 412). The
returned outcome’s integrity equals the backup’s recorded digest,
and RestoreOutcome::etag is the restored state’s strong
validator for the next CAS write.
Sourcepub fn reconcile_environment(
&self,
env_id: &EnvId,
idempotency_key: &IdempotencyKey,
) -> Result<Environment, StoreError>
pub fn reconcile_environment( &self, env_id: &EnvId, idempotency_key: &IdempotencyKey, ) -> Result<Environment, StoreError>
POST /environments/{env_id}/reconcile — server-mediated reconcile
authorization. Asks the control-plane store to AUTHORIZE + AUDIT +
CAS-pin a reconcile and return the authorized Environment snapshot;
the operator still executes the k8s apply against the live cluster (the
store has no cluster access). The cached strong ETag — captured by a
prior load_environment read in
this invocation — is replayed as the MANDATORY If-Match, so the
snapshot returned is provably the revision the operator reviewed; a
concurrent advance is refused server-side with a 412 (surfaced here as
StoreError::Conflict). The reconcile writes no desired state, so the
returned generation/ETag echo the loaded revision unchanged.
Callers MUST load_environment first: without a cached ETag the request
carries no If-Match and the server answers 428.
Sourcepub fn rotate_messaging_webhook_secret_to_ref(
&self,
env_id: &EnvId,
endpoint_id: MessagingEndpointId,
updated_by: String,
webhook_secret_ref: Option<String>,
idempotency_key: IdempotencyKey,
) -> Result<MessagingEndpoint, StoreError>
pub fn rotate_messaging_webhook_secret_to_ref( &self, env_id: &EnvId, endpoint_id: MessagingEndpointId, updated_by: String, webhook_secret_ref: Option<String>, idempotency_key: IdempotencyKey, ) -> Result<MessagingEndpoint, StoreError>
POST /environments/{env_id}/messaging/{eid}/rotate-secret carrying an
optional caller-supplied NEW webhook_secret_ref (raw secret://
URI). The control-plane store never mints secret material, so:
Some(ref)— the operator has already provisioned the value in its own secrets plane; the server records the asserted ref and bumps the endpoint generation.None— the server cannot prove a rotation and answers 501.
The EnvironmentMutations::rotate_messaging_webhook_secret trait
method delegates here with None (that generic surface carries no ref;
the new-ref path is remote-store-specific and reached through the
--store-url dispatch).
Sourcepub fn load_trust_root_keys(
&self,
env_id: &EnvId,
) -> Result<Vec<TrustedKey>, StoreError>
pub fn load_trust_root_keys( &self, env_id: &EnvId, ) -> Result<Vec<TrustedKey>, StoreError>
GET /environments/{env_id}/trust-root — the env’s trusted-key set
(empty for an absent row, which the server treats as closed-by-default;
a missing ENV is still a 404 → StoreError::NotFound). Inherent
rather than on EnvironmentReads because trust roots are a separate
document with their own error type and have no LocalFsStore
equivalent on that trait.
Trait Implementations§
Source§impl Clone for HttpEnvironmentStore
impl Clone for HttpEnvironmentStore
Source§fn clone(&self) -> HttpEnvironmentStore
fn clone(&self) -> HttpEnvironmentStore
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for HttpEnvironmentStore
impl Debug for HttpEnvironmentStore
Source§impl EnvironmentMutations for HttpEnvironmentStore
impl EnvironmentMutations for HttpEnvironmentStore
Source§fn create_environment(
&self,
env_id: &EnvId,
name: String,
host_config: EnvironmentHostConfig,
) -> Result<Environment, StoreError>
fn create_environment( &self, env_id: &EnvId, name: String, host_config: EnvironmentHostConfig, ) -> Result<Environment, StoreError>
Source§fn update_environment(
&self,
env_id: &EnvId,
patch: UpdateEnvironmentPayload,
) -> Result<Environment, StoreError>
fn update_environment( &self, env_id: &EnvId, patch: UpdateEnvironmentPayload, ) -> Result<Environment, StoreError>
FieldUpdate::Keep fields are skipped, FieldUpdate::Set
writes the new value, FieldUpdate::Clear resets optional
fields to None. The full updated Environment is returned.
Covers what was previously split across update_environment (no
listen_addr), set_public_url (single field), and set_config
(host-level fields including listen_addr). One verb, one HTTP
endpoint, one impl body per backend.Source§fn load_environment(&self, env_id: &EnvId) -> Result<Environment, StoreError>
fn load_environment(&self, env_id: &EnvId) -> Result<Environment, StoreError>
warm health-gate’s
expected_lifecycle, which the local closure-based path reads inline
under its flock. Maps to GET /environments/{env_id} on the HTTP
backend and delegates to
EnvironmentStore::load on
LocalFsStore.Source§fn trust_root_is_seeded(&self, env_id: &EnvId) -> Result<bool, StoreError>
fn trust_root_is_seeded(&self, env_id: &EnvId) -> Result<bool, StoreError>
GET /environments/{env_id}/trust-root on the HTTP backend and to a
trust-root file read on LocalFsStore. A read-only probe (like
Self::load_environment) — remote env apply --check uses it to diff
a declared trust_root instead of assuming it is seeded (the env
document does not carry trust-root state).Source§fn migrate_merge_bindings(
&self,
target_env_id: &EnvId,
payload: MigrateMergePayload,
) -> Result<(Vec<String>, Vec<String>), StoreError>
fn migrate_merge_bindings( &self, target_env_id: &EnvId, payload: MigrateMergePayload, ) -> Result<(Vec<String>, Vec<String>), StoreError>
target_env_id.
Skips slots / extension keys already bound in the target. Returns
the list of newly-merged slots + extension key strings (in the
form "<kind_path>::<instance_id>"). Read moreSource§fn stage_revision(
&self,
env_id: &EnvId,
payload: StageRevisionPayload,
idempotency_key: IdempotencyKey,
) -> Result<Revision, StoreError>
fn stage_revision( &self, env_id: &EnvId, payload: StageRevisionPayload, idempotency_key: IdempotencyKey, ) -> Result<Revision, StoreError>
deployment_id. The caller supplies
the pinned artifact pointers; LocalFsStore’s CLI helper resolves
them from a local .gtbundle upstream of this call so the trait
stays storage-only. Read moreSource§fn warm_revision(
&self,
env_id: &EnvId,
payload: WarmRevisionPayload,
idempotency_key: IdempotencyKey,
) -> Result<RevisionTransitionOutcome, StoreError>
fn warm_revision( &self, env_id: &EnvId, payload: WarmRevisionPayload, idempotency_key: IdempotencyKey, ) -> Result<RevisionTransitionOutcome, StoreError>
warm lifecycle chain, applying the
client-evaluated health-gate outcome. The deployer CLI runs the
runner-side health checks locally and ships the result in
WarmRevisionPayload::health_gate: Ok(()) advances the revision
to Ready; Err(failure) flips it to Failed atomically. This
replaces the closure-based gate so the operation can cross the A8
HTTP wire contract.Source§fn drain_revision(
&self,
env_id: &EnvId,
revision_id: RevisionId,
idempotency_key: IdempotencyKey,
) -> Result<RevisionTransitionOutcome, StoreError>
fn drain_revision( &self, env_id: &EnvId, revision_id: RevisionId, idempotency_key: IdempotencyKey, ) -> Result<RevisionTransitionOutcome, StoreError>
Ready revision (graceful step-down → Drained).
idempotency_key is required for A8 mutation consistency even though
drain is logically idempotent — the key enables audit-event replay.Source§fn archive_revision(
&self,
env_id: &EnvId,
revision_id: RevisionId,
idempotency_key: IdempotencyKey,
) -> Result<RevisionTransitionOutcome, StoreError>
fn archive_revision( &self, env_id: &EnvId, revision_id: RevisionId, idempotency_key: IdempotencyKey, ) -> Result<RevisionTransitionOutcome, StoreError>
Drained / Failed revision (terminal).
idempotency_key is required for A8 mutation consistency even though
archive is logically idempotent — the key enables audit-event replay.Source§fn add_bundle(
&self,
env_id: &EnvId,
payload: AddBundlePayload,
idempotency_key: IdempotencyKey,
) -> Result<BundleDeployment, StoreError>
fn add_bundle( &self, env_id: &EnvId, payload: AddBundlePayload, idempotency_key: IdempotencyKey, ) -> Result<BundleDeployment, StoreError>
idempotency_key is required for A8 §2 mutation replay; the local
impl accepts and ignores, the HTTP backend caches the original
outcome.Source§fn update_bundle(
&self,
env_id: &EnvId,
payload: UpdateBundlePayload,
idempotency_key: IdempotencyKey,
) -> Result<BundleDeployment, StoreError>
fn update_bundle( &self, env_id: &EnvId, payload: UpdateBundlePayload, idempotency_key: IdempotencyKey, ) -> Result<BundleDeployment, StoreError>
idempotency_key is required for A8 §2 mutation replay; the local
impl accepts and ignores, the HTTP backend caches the original
outcome.Source§fn remove_bundle(
&self,
env_id: &EnvId,
deployment_id: DeploymentId,
idempotency_key: IdempotencyKey,
) -> Result<RemoveBundleOutcome, StoreError>
fn remove_bundle( &self, env_id: &EnvId, deployment_id: DeploymentId, idempotency_key: IdempotencyKey, ) -> Result<RemoveBundleOutcome, StoreError>
op traffic clear and archive revisions first. Read morefn add_pack_binding( &self, env_id: &EnvId, binding: EnvPackBinding, idempotency_key: IdempotencyKey, ) -> Result<EnvPackBinding, StoreError>
Source§fn update_pack_binding(
&self,
env_id: &EnvId,
slot: CapabilitySlot,
binding: EnvPackBinding,
idempotency_key: IdempotencyKey,
) -> Result<(EnvPackBinding, u64), StoreError>
fn update_pack_binding( &self, env_id: &EnvId, slot: CapabilitySlot, binding: EnvPackBinding, idempotency_key: IdempotencyKey, ) -> Result<(EnvPackBinding, u64), StoreError>
(new_binding, new_generation) — the bumped audit generation
is surfaced for downstream observability.fn remove_pack_binding( &self, env_id: &EnvId, slot: CapabilitySlot, idempotency_key: IdempotencyKey, ) -> Result<(EnvPackBinding, u64), StoreError>
fn rollback_pack_binding( &self, env_id: &EnvId, slot: CapabilitySlot, idempotency_key: IdempotencyKey, ) -> Result<(EnvPackBinding, u64), StoreError>
fn add_extension_binding( &self, env_id: &EnvId, binding: ExtensionBinding, idempotency_key: IdempotencyKey, ) -> Result<ExtensionBinding, StoreError>
fn update_extension_binding( &self, env_id: &EnvId, key: ExtensionKey, binding: ExtensionBinding, idempotency_key: IdempotencyKey, ) -> Result<(ExtensionBinding, u64), StoreError>
fn remove_extension_binding( &self, env_id: &EnvId, key: ExtensionKey, idempotency_key: IdempotencyKey, ) -> Result<(ExtensionBinding, u64), StoreError>
fn rollback_extension_binding( &self, env_id: &EnvId, key: ExtensionKey, idempotency_key: IdempotencyKey, ) -> Result<(ExtensionBinding, u64), StoreError>
fn set_traffic_split( &self, env_id: &EnvId, payload: SetTrafficSplitPayload, idempotency_key: IdempotencyKey, ) -> Result<ApplyTrafficSplitOutcome, StoreError>
fn rollback_traffic_split( &self, env_id: &EnvId, deployment_id: DeploymentId, idempotency_key: IdempotencyKey, ) -> Result<RollbackTrafficSplitOutcome, StoreError>
Source§fn add_messaging_endpoint(
&self,
env_id: &EnvId,
payload: AddMessagingEndpointPayload,
idempotency_key: IdempotencyKey,
) -> Result<MessagingEndpoint, StoreError>
fn add_messaging_endpoint( &self, env_id: &EnvId, payload: AddMessagingEndpointPayload, idempotency_key: IdempotencyKey, ) -> Result<MessagingEndpoint, StoreError>
idempotency_key is both A8 §2 transport metadata AND domain state
in this group: the key is embedded in the endpoint’s updated_by
stamp and drives same-key replay detection (see
greentic_deploy_spec::engine::messaging).fn link_messaging_bundle( &self, env_id: &EnvId, endpoint_id: MessagingEndpointId, bundle_id: BundleId, updated_by: String, idempotency_key: IdempotencyKey, ) -> Result<MessagingEndpoint, StoreError>
fn unlink_messaging_bundle( &self, env_id: &EnvId, endpoint_id: MessagingEndpointId, bundle_id: BundleId, updated_by: String, idempotency_key: IdempotencyKey, ) -> Result<MessagingEndpoint, StoreError>
Source§fn set_messaging_welcome_flow(
&self,
env_id: &EnvId,
payload: SetMessagingWelcomeFlowPayload,
idempotency_key: IdempotencyKey,
) -> Result<MessagingEndpoint, StoreError>
fn set_messaging_welcome_flow( &self, env_id: &EnvId, payload: SetMessagingWelcomeFlowPayload, idempotency_key: IdempotencyKey, ) -> Result<MessagingEndpoint, StoreError>
idempotency_key semantics as on
Self::add_messaging_endpoint — transport metadata that doubles
as the replay-detection stamp.fn remove_messaging_endpoint( &self, env_id: &EnvId, endpoint_id: MessagingEndpointId, ) -> Result<MessagingEndpointId, StoreError>
fn rotate_messaging_webhook_secret( &self, env_id: &EnvId, endpoint_id: MessagingEndpointId, updated_by: String, idempotency_key: IdempotencyKey, ) -> Result<MessagingEndpoint, StoreError>
Source§fn bootstrap_trust_root(
&self,
env_id: &EnvId,
) -> Result<TrustRootSeed, StoreError>
fn bootstrap_trust_root( &self, env_id: &EnvId, ) -> Result<TrustRootSeed, StoreError>
key_id
dedup), and it never rejects on an existing trust root.Source§fn seed_trust_root_if_absent(
&self,
env_id: &EnvId,
) -> Result<Option<TrustRootSeed>, StoreError>
fn seed_trust_root_if_absent( &self, env_id: &EnvId, ) -> Result<Option<TrustRootSeed>, StoreError>
op env init: returns Some(seed)
when a key was minted, None when a trust root already existed.Source§fn add_trusted_key(
&self,
env_id: &EnvId,
key_id: String,
public_key_pem: String,
idempotency_key: IdempotencyKey,
) -> Result<TrustRootAddOutcome, StoreError>
fn add_trusted_key( &self, env_id: &EnvId, key_id: String, public_key_pem: String, idempotency_key: IdempotencyKey, ) -> Result<TrustRootAddOutcome, StoreError>
idempotency_key is required for A8 mutation consistency even though
add_trusted_key is intrinsically idempotent on key_id collision —
the key enables HTTP-backend audit-event replay. Local-FS impls accept
and ignore it; HTTP impls cache it for replay.Source§fn remove_trusted_key(
&self,
env_id: &EnvId,
key_id: String,
idempotency_key: IdempotencyKey,
) -> Result<TrustRootRemoveOutcome, StoreError>
fn remove_trusted_key( &self, env_id: &EnvId, key_id: String, idempotency_key: IdempotencyKey, ) -> Result<TrustRootRemoveOutcome, StoreError>
idempotency_key is required for A8 mutation consistency. remove
is logically idempotent on the trust-root state, but the wire-shape
removed_public_key_pem field would be null on retry (the original
PEM is gone) — so a retry without replay loses recovery material AND
audit fidelity. The key enables HTTP-backend replay of the original
response/audit; local-FS impls accept and ignore it.Source§impl EnvironmentReads for HttpEnvironmentStore
impl EnvironmentReads for HttpEnvironmentStore
Source§fn list_env_ids(&self) -> Result<Vec<EnvId>, StoreError>
fn list_env_ids(&self) -> Result<Vec<EnvId>, StoreError>
GET /environments → the sorted env-id set (RBAC read-scope filtering
is applied server-side).
Source§fn env_exists(&self, env_id: &EnvId) -> Result<bool, StoreError>
fn env_exists(&self, env_id: &EnvId) -> Result<bool, StoreError>
A GET of the env mapped to a boolean: 200 → present, 404 → absent.
Source§fn load_env(&self, env_id: &EnvId) -> Result<Environment, StoreError>
fn load_env(&self, env_id: &EnvId) -> Result<Environment, StoreError>
The environment document. Delegates to the mutation-side read
EnvironmentMutations::load_environment (GET /environments/{env_id}) so the env GET shape lives in one place; the
read verbs only project the returned document.
Source§fn read_runtime(
&self,
env_id: &EnvId,
) -> Result<Option<EnvironmentRuntime>, StoreError>
fn read_runtime( &self, env_id: &EnvId, ) -> Result<Option<EnvironmentRuntime>, StoreError>
GET /environments/{env_id}/runtime → the runtime host-config sidecar
(null when none has been written) so remote env show reports the
real runtime instead of conflating “absent” with “not exposed”.
Auto Trait Implementations§
impl !RefUnwindSafe for HttpEnvironmentStore
impl !UnwindSafe for HttpEnvironmentStore
impl Freeze for HttpEnvironmentStore
impl Send for HttpEnvironmentStore
impl Sync for HttpEnvironmentStore
impl Unpin for HttpEnvironmentStore
impl UnsafeUnpin for HttpEnvironmentStore
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> 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> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
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 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.