pub struct MergeWrapper {
    inner: AggregateUDF,
    name: String,
    merge_signature: Signature,
    original_phy_expr: Arc<AggregateFunctionExpr>,
    return_type: DataType,
}Expand description
TODO(discord9): mark this function as non-ser/de able
This wrapper shouldn’t be register as a udaf, as it contain extra data that is not serializable. and changes for different logical plans.
Fields§
§inner: AggregateUDF§name: String§merge_signature: Signature§original_phy_expr: Arc<AggregateFunctionExpr>The original physical expression of the aggregate function, can’t store the original aggregate function directly, as PhysicalExpr didn’t implement Any
return_type: DataTypeImplementations§
Trait Implementations§
Source§impl AggregateUDFImpl for MergeWrapper
 
impl AggregateUDFImpl for MergeWrapper
Source§fn return_type(&self, _arg_types: &[DataType]) -> Result<DataType>
 
fn return_type(&self, _arg_types: &[DataType]) -> Result<DataType>
Notice here the arg_types is actually the state_fields’s data types,
so return fixed return type instead of using arg_types to determine the return type.
Source§fn coerce_types(&self, arg_types: &[DataType]) -> Result<Vec<DataType>>
 
fn coerce_types(&self, arg_types: &[DataType]) -> Result<Vec<DataType>>
Coerce types also do nothing, as optimizer should be able to already make struct types
Source§fn state_fields(&self, _args: StateFieldsArgs<'_>) -> Result<Vec<FieldRef>>
 
fn state_fields(&self, _args: StateFieldsArgs<'_>) -> Result<Vec<FieldRef>>
Just return the original aggregate function’s state fields.
Source§fn accumulator<'a, 'b>(
    &'a self,
    acc_args: AccumulatorArgs<'b>,
) -> Result<Box<dyn Accumulator>>
 
fn accumulator<'a, 'b>( &'a self, acc_args: AccumulatorArgs<'b>, ) -> Result<Box<dyn Accumulator>>
Return a new [
Accumulator] that aggregates values for a specific
group during query execution. Read moreSource§fn is_nullable(&self) -> bool
 
fn is_nullable(&self) -> bool
Whether the aggregate function is nullable. Read more
Source§fn signature(&self) -> &Signature
 
fn signature(&self) -> &Signature
Returns the function’s [
Signature] for information about what input
types are accepted and the function’s Volatility.§fn schema_name(
    &self,
    params: &AggregateFunctionParams,
) -> Result<String, DataFusionError>
 
fn schema_name( &self, params: &AggregateFunctionParams, ) -> Result<String, DataFusionError>
Returns the name of the column this expression would create Read more
§fn human_display(
    &self,
    params: &AggregateFunctionParams,
) -> Result<String, DataFusionError>
 
fn human_display( &self, params: &AggregateFunctionParams, ) -> Result<String, DataFusionError>
Returns a human readable expression. Read more
§fn window_function_schema_name(
    &self,
    params: &WindowFunctionParams,
) -> Result<String, DataFusionError>
 
fn window_function_schema_name( &self, params: &WindowFunctionParams, ) -> Result<String, DataFusionError>
Returns the name of the column this expression would create Read more
§fn display_name(
    &self,
    params: &AggregateFunctionParams,
) -> Result<String, DataFusionError>
 
fn display_name( &self, params: &AggregateFunctionParams, ) -> Result<String, DataFusionError>
Returns the user-defined display name of function, given the arguments Read more
§fn window_function_display_name(
    &self,
    params: &WindowFunctionParams,
) -> Result<String, DataFusionError>
 
fn window_function_display_name( &self, params: &WindowFunctionParams, ) -> Result<String, DataFusionError>
Returns the user-defined display name of function, given the arguments Read more
§fn return_field(
    &self,
    arg_fields: &[Arc<Field>],
) -> Result<Arc<Field>, DataFusionError>
 
fn return_field( &self, arg_fields: &[Arc<Field>], ) -> Result<Arc<Field>, DataFusionError>
What type will be returned by this function, given the arguments? Read more
§fn groups_accumulator_supported(&self, _args: AccumulatorArgs<'_>) -> bool
 
fn groups_accumulator_supported(&self, _args: AccumulatorArgs<'_>) -> bool
If the aggregate expression has a specialized
[
GroupsAccumulator] implementation. If this returns true,
[Self::create_groups_accumulator] will be called. Read more§fn create_groups_accumulator(
    &self,
    _args: AccumulatorArgs<'_>,
) -> Result<Box<dyn GroupsAccumulator>, DataFusionError>
 
fn create_groups_accumulator( &self, _args: AccumulatorArgs<'_>, ) -> Result<Box<dyn GroupsAccumulator>, DataFusionError>
Return a specialized [
GroupsAccumulator] that manages state
for all groups. Read more§fn create_sliding_accumulator(
    &self,
    args: AccumulatorArgs<'_>,
) -> Result<Box<dyn Accumulator>, DataFusionError>
 
fn create_sliding_accumulator( &self, args: AccumulatorArgs<'_>, ) -> Result<Box<dyn Accumulator>, DataFusionError>
Sliding accumulator is an alternative accumulator that can be used for
window functions. It has retract method to revert the previous update. Read more
§fn with_beneficial_ordering(
    self: Arc<Self>,
    _beneficial_ordering: bool,
) -> Result<Option<Arc<dyn AggregateUDFImpl>>, DataFusionError>
 
fn with_beneficial_ordering( self: Arc<Self>, _beneficial_ordering: bool, ) -> Result<Option<Arc<dyn AggregateUDFImpl>>, DataFusionError>
Sets the indicator whether ordering requirements of the AggregateUDFImpl is
satisfied by its input. If this is not the case, UDFs with order
sensitivity 
AggregateOrderSensitivity::Beneficial can still produce
the correct result with possibly more work internally. Read more§fn order_sensitivity(&self) -> AggregateOrderSensitivity
 
fn order_sensitivity(&self) -> AggregateOrderSensitivity
Gets the order sensitivity of the UDF. See [
AggregateOrderSensitivity]
for possible options.§fn simplify(
    &self,
) -> Option<Box<dyn Fn(AggregateFunction, &dyn SimplifyInfo) -> Result<Expr, DataFusionError>>>
 
fn simplify( &self, ) -> Option<Box<dyn Fn(AggregateFunction, &dyn SimplifyInfo) -> Result<Expr, DataFusionError>>>
Optionally apply per-UDaF simplification / rewrite rules. Read more
§fn reverse_expr(&self) -> ReversedUDAF
 
fn reverse_expr(&self) -> ReversedUDAF
Returns the reverse expression of the aggregate function.
§fn is_descending(&self) -> Option<bool>
 
fn is_descending(&self) -> Option<bool>
If this function is max, return true
If the function is min, return false
Otherwise return None (the default) Read more
§fn value_from_stats(
    &self,
    _statistics_args: &StatisticsArgs<'_>,
) -> Option<ScalarValue>
 
fn value_from_stats( &self, _statistics_args: &StatisticsArgs<'_>, ) -> Option<ScalarValue>
Return the value of this aggregate function if it can be determined
entirely from statistics and arguments. Read more
§fn default_value(
    &self,
    data_type: &DataType,
) -> Result<ScalarValue, DataFusionError>
 
fn default_value( &self, data_type: &DataType, ) -> Result<ScalarValue, DataFusionError>
Returns default value of the function given the input is all 
null. Read more§fn supports_null_handling_clause(&self) -> bool
 
fn supports_null_handling_clause(&self) -> bool
If this function supports 
[IGNORE NULLS | RESPECT NULLS] clause, return true
If the function does not, return false§fn is_ordered_set_aggregate(&self) -> bool
 
fn is_ordered_set_aggregate(&self) -> bool
If this function is ordered-set aggregate function, return true
otherwise, return false Read more
§fn documentation(&self) -> Option<&Documentation>
 
fn documentation(&self) -> Option<&Documentation>
Returns the documentation for this Aggregate UDF. Read more
§fn set_monotonicity(&self, _data_type: &DataType) -> SetMonotonicity
 
fn set_monotonicity(&self, _data_type: &DataType) -> SetMonotonicity
Indicates whether the aggregation function is monotonic as a set
function. See [
SetMonotonicity] for details.Source§impl Clone for MergeWrapper
 
impl Clone for MergeWrapper
Source§fn clone(&self) -> MergeWrapper
 
fn clone(&self) -> MergeWrapper
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
 
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from 
source. Read moreSource§impl Debug for MergeWrapper
 
impl Debug for MergeWrapper
Source§impl Hash for MergeWrapper
 
impl Hash for MergeWrapper
Source§impl PartialEq for MergeWrapper
 
impl PartialEq for MergeWrapper
impl Eq for MergeWrapper
Auto Trait Implementations§
impl Freeze for MergeWrapper
impl !RefUnwindSafe for MergeWrapper
impl Send for MergeWrapper
impl Sync for MergeWrapper
impl Unpin for MergeWrapper
impl !UnwindSafe for MergeWrapper
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
    T: Clone,
 
impl<T> CloneToUninit for Twhere
    T: Clone,
§impl<T> Conv for T
 
impl<T> Conv for T
§impl<T, V> Convert<T> for Vwhere
    V: Into<T>,
 
impl<T, V> Convert<T> for Vwhere
    V: Into<T>,
fn convert(value: Self) -> T
fn convert_box(value: Box<Self>) -> Box<T>
fn convert_vec(value: Vec<Self>) -> Vec<T>
fn convert_vec_box(value: Vec<Box<Self>>) -> Vec<Box<T>>
fn convert_matrix(value: Vec<Vec<Self>>) -> Vec<Vec<T>>
fn convert_option(value: Option<Self>) -> Option<T>
fn convert_option_box(value: Option<Box<Self>>) -> Option<Box<T>>
fn convert_option_vec(value: Option<Vec<Self>>) -> Option<Vec<T>>
§impl<Q, K> Equivalent<K> for Q
 
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
 
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
 
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
 
fn equivalent(&self, key: &K) -> bool
Compare self to 
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
 
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
 
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<T> FmtForward for T
 
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
    Self: Binary,
 
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,
 
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,
 
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,
 
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,
 
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,
 
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,
 
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,
 
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,
 
fn fmt_list(self) -> FmtList<Self>where
    &'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
§impl<T> FutureExt for T
 
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
 
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
 
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
 
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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 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>
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
 
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
 
fn into_request(self) -> Request<T>
Wrap the input message 
T in a tonic::Request§impl<L> LayerExt<L> for L
 
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
    L: Layer<S>,
 
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 Twhere
    T: ?Sized,
 
impl<T> Pipe for Twhere
    T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
    Self: Sized,
 
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
    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) -> Rwhere
    R: 'a,
 
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
    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) -> Rwhere
    R: 'a,
 
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
    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
 
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§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
§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
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
 
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
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
 
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows 
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
 
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
    T: ?Sized,
 
impl<T> PolicyExt for Twhere
    T: ?Sized,
§impl<T> ServiceExt for T
 
impl<T> ServiceExt for T
§fn propagate_header(self, header: HeaderName) -> PropagateHeader<Self>where
    Self: Sized,
 
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,
 
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,
 
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,
 
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,
 
fn compression(self) -> Compression<Self>where
    Self: Sized,
Compresses response bodies. Read more
§fn decompression(self) -> Decompression<Self>where
    Self: Sized,
 
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,
 
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,
 
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,
 
fn follow_redirects(self) -> FollowRedirect<Self>where
    Self: Sized,
§fn sensitive_headers(
    self,
    headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>where
    Self: Sized,
 
fn sensitive_headers(
    self,
    headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>where
    Self: Sized,
§fn sensitive_request_headers(
    self,
    headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<Self>where
    Self: Sized,
 
fn sensitive_request_headers(
    self,
    headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<Self>where
    Self: Sized,
§fn sensitive_response_headers(
    self,
    headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveResponseHeaders<Self>where
    Self: Sized,
 
fn sensitive_response_headers(
    self,
    headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveResponseHeaders<Self>where
    Self: Sized,
§fn override_request_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetRequestHeader<Self, M>where
    Self: Sized,
 
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,
 
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,
 
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,
 
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,
 
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,
 
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,
 
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,
 
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,
 
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,
 
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,
 
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,
 
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,
 
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,
 
fn append_trailing_slash(self) -> NormalizePath<Self>where
    Self: Sized,
Append trailing slash to paths. Read more
§impl<SS, SP> SupersetOf<SS> for SPwhere
    SS: SubsetOf<SP>,
 
impl<SS, SP> SupersetOf<SS> for SPwhere
    SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
 
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct 
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
 
fn is_in_subset(&self) -> bool
Checks if 
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
 
fn to_subset_unchecked(&self) -> SS
Use with care! Same as 
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
 
fn from_subset(element: &SS) -> SP
The inclusion map: converts 
self to the equivalent element of its superset.§impl<T> Tap for T
 
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
 
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the 
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
 
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the 
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
 
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the 
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
 
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the 
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
 
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the 
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
 
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the 
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
 
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
 
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
 
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
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
 
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
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
 
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
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
 
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
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
 
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls 
.tap_deref() only in debug builds, and is erased in release
builds.