Skip to main content

CompactionScheduler

Struct CompactionScheduler 

Source
pub(crate) struct CompactionScheduler {
    scheduler: SchedulerRef,
    region_status: HashMap<RegionId, CompactionStatus>,
    request_sender: Sender<WorkerRequestWithTime>,
    cache_manager: CacheManagerRef,
    engine_config: Arc<MitoConfig>,
    memory_manager: Arc<CompactionMemoryManager>,
    memory_policy: OnExhaustedPolicy,
    listener: WorkerListener,
    plugins: Plugins,
    next_plan_id: u64,
}
Expand description

Compaction scheduler tracks and manages compaction tasks.

Fields§

§scheduler: SchedulerRef§region_status: HashMap<RegionId, CompactionStatus>

Compacting regions.

§request_sender: Sender<WorkerRequestWithTime>

Request sender of the worker that this scheduler belongs to.

§cache_manager: CacheManagerRef§engine_config: Arc<MitoConfig>§memory_manager: Arc<CompactionMemoryManager>§memory_policy: OnExhaustedPolicy§listener: WorkerListener§plugins: Plugins

Plugins for the compaction scheduler.

§next_plan_id: u64

Scheduler-wide generation counter for compaction plans and executions. It outlives region statuses so close/reopen cannot reuse an old identity.

Implementations§

Source§

impl CompactionScheduler

Source

pub(super) fn dispatch_compaction_planning( &self, plan_id: u64, request: CompactionRequest, options: Options, time_range: Option<TimestampRange>, )

Source

pub(super) async fn notify_planning_result( region_id: RegionId, plan_id: u64, request_sender: Sender<WorkerRequestWithTime>, planning: impl Future<Output = CompactionPlanningResult> + Send, )

Runs the planning future and always sends the planning result back to the worker, even if the planning panics.

The worker only leaves the picking phase after it receives the CompactionPickFinished notification. If a panicked planning task swallowed the notification, the region would be stuck in the picking phase forever, blocking all future compactions and pending DDLs (e.g. entering staging) of the region.

Source

async fn prepare_compaction( request: CompactionRequest, options: Options, plugins: Plugins, max_background_compactions: usize, time_range: Option<TimestampRange>, ) -> CompactionPlanningResult

Source

pub(super) async fn handle_compaction_pick_finished_inner( &mut self, finished: CompactionPickFinished, manifest_ctx: &Arc<ManifestContext>, schema_metadata_manager: SchemaMetadataManagerRef, ) -> CompactionTransition

Applies a background planning result to the current compaction lifecycle.

§Returns

Reports an automatic follow-up dispatched after Picking, or DDL requests released when Picking terminates without creating an execution. The owning worker must dispatch returned DDLs immediately because no execution callback will follow.

Source

async fn finish_compaction_planning( &mut self, region_id: RegionId, err: Option<Arc<Error>>, manifest_ctx: &Arc<ManifestContext>, schema_metadata_manager: SchemaMetadataManagerRef, ) -> CompactionTransition

Source

async fn submit_prepared_compaction( &mut self, prepared: PreparedCompaction, files: CompactingFiles, waiters: Vec<OutputTx>, plan_id: u64, ) -> Result<Option<CompactionPhase>>

Source

fn submit_compaction_task( &mut self, task: Box<CompactionTaskImpl>, region_id: RegionId, ) -> Result<(), (Error, Option<Box<CompactionTaskImpl>>)>

Source

fn exceeds_compaction_memory_limit(&self, estimated_bytes: u64) -> Option<u64>

Source§

impl CompactionScheduler

Source

pub(crate) fn new( scheduler: SchedulerRef, request_sender: Sender<WorkerRequestWithTime>, cache_manager: CacheManagerRef, engine_config: Arc<MitoConfig>, listener: WorkerListener, plugins: Plugins, memory_manager: Arc<CompactionMemoryManager>, memory_policy: OnExhaustedPolicy, ) -> Self

Creates an empty scheduler bound to one region worker.

§Effects

Stores the worker request sender and shared scheduling resources. No compaction is dispatched until a scheduling method is called.

§Constraints

All lifecycle methods on the returned scheduler must be driven by the same worker so region state transitions remain serialized.

Source

pub(crate) fn schedule_automatic_compaction( &mut self, compact_options: Options, version_control: &Arc<VersionControl>, access_layer: &AccessLayerRef, manifest_ctx: &Arc<ManifestContext>, schema_metadata_manager: SchemaMetadataManagerRef, ) -> Result<bool>

Accepts an automatic compaction trigger for a region.

§Effects

Starts planning when no scheduler status exists for the region. Otherwise, an active status coalesces the trigger into one unrestricted follow-up cycle. Returns true only when this call dispatches planning.

§Constraints

The owning region worker must call this method serially. Automatic triggers have no waiter and may be ignored while a DDL fence is active. The region identity comes from version_control; access_layer and manifest_ctx must belong to the same region.

Source

pub(crate) fn schedule_manual_compaction( &mut self, compact_options: Options, version_control: &Arc<VersionControl>, access_layer: &AccessLayerRef, waiter: OptionOutputTx, manifest_ctx: &Arc<ManifestContext>, schema_metadata_manager: SchemaMetadataManagerRef, max_parallelism: usize, time_range: Option<TimestampRange>, ) -> Result<bool>

Accepts a manual compaction request for a region.

§Effects

Starts planning when no scheduler status exists for the region. During an automatic compaction, queues the request and replaces any older pending manual request; during a manual compaction, rejects the new request through waiter. Returns true only when this call dispatches planning.

§Constraints

The owning region worker must call this method serially. The supplied waiter is completed exactly once by cycle completion, replacement, cancellation, failure, or region teardown. The region identity comes from version_control; access_layer and manifest_ctx must belong to the same region.

Source

pub(crate) async fn handle_compaction_pick_finished( &mut self, finished: CompactionPickFinished, manifest_ctx: &Arc<ManifestContext>, schema_metadata_manager: SchemaMetadataManagerRef, ) -> CompactionTransition

Applies a background planning result to the current region state.

§Effects

Rejects stale plans, submits a prepared local or remote execution, or completes the cycle when planning produced no executable plan. The returned transition reports a dispatched automatic follow-up or DDL requests released by the resulting terminal transition.

§Constraints

The owning worker must call this method for planning notifications and must execute every returned DDL request. The notification may be stale; stale notifications intentionally have no effect.

Source

pub(crate) fn is_current_execution( &self, region_id: RegionId, execution: &CompactionExecution, ) -> bool

Returns whether a terminal notification belongs to the installed execution.

§Effects

Performs a read-only identity check against the region’s current plan.

§Constraints

Callers must check this before applying a compaction edit. Matching only the region id is insufficient because close/reopen can replace a status.

Source

pub(crate) async fn on_execution_finished( &mut self, region_id: RegionId, execution: &CompactionExecution, manifest_ctx: &Arc<ManifestContext>, schema_metadata_manager: SchemaMetadataManagerRef, ) -> CompactionTransition

Completes the installed execution after its edit has been applied.

§Effects

Notifies waiters, schedules a pending manual or explicit automatic follow-up, or removes the region status. The returned transition reports a dispatched automatic follow-up or DDLs that are now safe to execute.

§Constraints

The owning worker must call this only after accepting and applying the execution’s result, and must execute every returned DDL request. Stale executions are ignored.

Source

pub(crate) async fn on_execution_cancelled( &mut self, region_id: RegionId, execution: &CompactionExecution, ) -> Vec<SenderDdlRequest>

Completes a cooperatively canceled execution.

§Effects

Removes the matching region status, notifies compaction waiters, and returns DDLs that were waiting for cancellation.

§Constraints

The owning worker must execute every returned DDL request. A stale cancellation is ignored.

Source

pub(crate) fn on_execution_failed( &mut self, region_id: RegionId, execution: &CompactionExecution, err: Arc<Error>, )

Records failure of the installed execution.

§Effects

Removes the matching region status and fails all compaction waiters and dependent DDL requests with the supplied error.

§Constraints

A stale execution failure is ignored so it cannot tear down replacement state.

Source

pub(crate) fn on_region_dropped(&mut self, region_id: RegionId)

Removes compaction state because the region was dropped.

§Effects

Fails all compaction and DDL waiters owned by the status.

§Constraints

The owning worker must invoke this as part of serialized region teardown.

Source

pub(crate) fn on_region_closed(&mut self, region_id: RegionId)

Removes compaction state because the region was closed.

§Effects

Fails all compaction and DDL waiters owned by the status.

§Constraints

The owning worker must invoke this as part of serialized region teardown.

Source

pub(crate) fn on_region_truncated(&mut self, region_id: RegionId)

Removes compaction state because the region was truncated.

§Effects

Fails all compaction and DDL waiters owned by the status.

§Constraints

The owning worker must invoke this after truncate completes.

Source

pub(crate) fn try_cancel_and_add_ddl<T>( &mut self, region_id: RegionId, sender: OptionOutputTx, request: T, into_ddl_request: impl FnOnce(T) -> DdlRequest, ) -> Result<(), (OptionOutputTx, T)>

Cancels a running compaction and queues its dependent DDL atomically.

§Effects

Requests cancellation when the active phase can still stop, then queues the DDL. The queued DDL forms a scheduling fence for subsequent compaction triggers. If no compaction is running, returns the sender and typed request unchanged.

§Constraints

Production callers use this only for DdlRequest::Truncate and DdlRequest::EnterStaging. Ok(()) means the caller must wait for a terminal callback to receive and execute the queued DDL; Err means the caller must execute the returned request directly.

Source§

impl CompactionScheduler

Source

fn next_plan_id(counter: &mut u64) -> u64

Returns the current plan id and advances the counter.

Takes the counter instead of &mut self so callers can bump it while holding a mutable borrow of a region status.

Source

fn schedule_compaction( &mut self, trigger: CompactionTrigger, compact_options: Options, version_control: &Arc<VersionControl>, access_layer: &AccessLayerRef, waiter: OptionOutputTx, manifest_ctx: &Arc<ManifestContext>, schema_metadata_manager: SchemaMetadataManagerRef, max_parallelism: usize, time_range: Option<TimestampRange>, ) -> Result<bool>

Source

fn handle_pending_compaction_request( &mut self, region_id: RegionId, manifest_ctx: &Arc<ManifestContext>, schema_metadata_manager: SchemaMetadataManagerRef, ) -> bool

Source

async fn on_compaction_finished( &mut self, region_id: RegionId, manifest_ctx: &Arc<ManifestContext>, schema_metadata_manager: SchemaMetadataManagerRef, ) -> CompactionTransition

Notifies the scheduler that the compaction job is finished successfully.

Source

fn schedule_automatic_followup( &mut self, region_id: RegionId, manifest_ctx: &Arc<ManifestContext>, schema_metadata_manager: SchemaMetadataManagerRef, ) -> bool

Source

async fn on_compaction_cancelled( &mut self, region_id: RegionId, ) -> Vec<SenderDdlRequest>

Notifies the scheduler that the compaction job is cancelled cooperatively.

Source

fn on_compaction_failed(&mut self, region_id: RegionId, err: Arc<Error>)

Notifies the scheduler that the compaction job is failed.

Source

fn remove_region_on_failure(&mut self, region_id: RegionId, err: Arc<Error>)

Source

fn remove_region_on_cancel( &mut self, region_id: RegionId, ) -> Vec<SenderDdlRequest>

Trait Implementations§

Source§

impl Drop for CompactionScheduler

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Any for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

§

fn type_name(&self) -> &'static str

§

impl<T> AnySync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSend for T
where T: Any + Send,

§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Send + Sync>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
§

impl<T> IntoRequest<T> for T

§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<L> LayerExt<L> for L

§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in [Layered].
§

impl<T> Pipe for T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> ServiceExt for T

§

fn propagate_header(self, header: HeaderName) -> PropagateHeader<Self>
where Self: Sized,

Propagate a header from the request to the response. Read more
§

fn add_extension<T>(self, value: T) -> AddExtension<Self, T>
where Self: Sized,

Add some shareable value to request extensions. Read more
§

fn map_request_body<F>(self, f: F) -> MapRequestBody<Self, F>
where Self: Sized,

Apply a transformation to the request body. Read more
§

fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>
where Self: Sized,

Apply a transformation to the response body. Read more
§

fn compression(self) -> Compression<Self>
where Self: Sized,

Compresses response bodies. Read more
§

fn decompression(self) -> Decompression<Self>
where Self: Sized,

Decompress response bodies. Read more
§

fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>
where Self: Sized,

High level tracing that classifies responses using HTTP status codes. Read more
§

fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>
where Self: Sized,

High level tracing that classifies responses using gRPC headers. Read more
§

fn follow_redirects(self) -> FollowRedirect<Self>
where Self: Sized,

Follow redirect resposes using the Standard policy. Read more
§

fn sensitive_headers( self, headers: impl IntoIterator<Item = HeaderName>, ) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>
where Self: Sized,

Mark headers as sensitive on both requests and responses. Read more
§

fn sensitive_request_headers( self, headers: impl IntoIterator<Item = HeaderName>, ) -> SetSensitiveRequestHeaders<Self>
where Self: Sized,

Mark headers as sensitive on requests. Read more
§

fn sensitive_response_headers( self, headers: impl IntoIterator<Item = HeaderName>, ) -> SetSensitiveResponseHeaders<Self>
where Self: Sized,

Mark headers as sensitive on responses. Read more
§

fn override_request_header<M>( self, header_name: HeaderName, make: M, ) -> SetRequestHeader<Self, M>
where Self: Sized,

Insert a header into the request. Read more
§

fn append_request_header<M>( self, header_name: HeaderName, make: M, ) -> SetRequestHeader<Self, M>
where Self: Sized,

Append a header into the request. Read more
§

fn insert_request_header_if_not_present<M>( self, header_name: HeaderName, make: M, ) -> SetRequestHeader<Self, M>
where Self: Sized,

Insert a header into the request, if the header is not already present. Read more
§

fn override_response_header<M>( self, header_name: HeaderName, make: M, ) -> SetResponseHeader<Self, M>
where Self: Sized,

Insert a header into the response. Read more
§

fn append_response_header<M>( self, header_name: HeaderName, make: M, ) -> SetResponseHeader<Self, M>
where Self: Sized,

Append a header into the response. Read more
§

fn insert_response_header_if_not_present<M>( self, header_name: HeaderName, make: M, ) -> SetResponseHeader<Self, M>
where Self: Sized,

Insert a header into the response, if the header is not already present. Read more
§

fn set_request_id<M>( self, header_name: HeaderName, make_request_id: M, ) -> SetRequestId<Self, M>
where Self: Sized, M: MakeRequestId,

Add request id header and extension. Read more
§

fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>
where Self: Sized, M: MakeRequestId,

Add request id header and extension, using x-request-id as the header name. Read more
§

fn propagate_request_id( self, header_name: HeaderName, ) -> PropagateRequestId<Self>
where Self: Sized,

Propgate request ids from requests to responses. Read more
§

fn propagate_x_request_id(self) -> PropagateRequestId<Self>
where Self: Sized,

Propgate request ids from requests to responses, using x-request-id as the header name. Read more
§

fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>
where Self: Sized,

Catch panics and convert them into 500 Internal Server responses. Read more
§

fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>
where Self: Sized,

Intercept requests with over-sized payloads and convert them into 413 Payload Too Large responses. Read more
§

fn trim_trailing_slash(self) -> NormalizePath<Self>
where Self: Sized,

Remove trailing slashes from paths. Read more
§

fn append_trailing_slash(self) -> NormalizePath<Self>
where Self: Sized,

Append trailing slash to paths. Read more
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> Any for T
where T: Any,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> Fruit for T
where T: Send + Downcast,

§

impl<T> MaybeSend for T
where T: Send,

§

impl<T> MaybeSend for T
where T: Send,