Skip to main content

StablecoinDEX

Struct StablecoinDEX 

Source
pub struct StablecoinDEX {
    pub books: <Mapping<B256, Orderbook> as StorableType>::Handler,
    pub orders: <Mapping<u128, Order> as StorableType>::Handler,
    pub balances: <Mapping<Address, Mapping<Address, u128>> as StorableType>::Handler,
    pub next_order_id: <u128 as StorableType>::Handler,
    pub book_keys: <Vec<B256> as StorableType>::Handler,
    address: Address,
    storage: StorageCtx,
}

Fields§

§books: <Mapping<B256, Orderbook> as StorableType>::Handler§orders: <Mapping<u128, Order> as StorableType>::Handler§balances: <Mapping<Address, Mapping<Address, u128>> as StorableType>::Handler§next_order_id: <u128 as StorableType>::Handler§book_keys: <Vec<B256> as StorableType>::Handler§address: Address§storage: StorageCtx

Implementations§

Source§

impl StablecoinDEX

Source

pub fn new() -> Self

Creates an instance of the precompile.

Caution: This does not initialize the account, see Self::initialize.

Source

fn __new(address: Address) -> Self

Source

fn __initialize(&mut self) -> Result<()>

Source

fn emit_event(&mut self, event: impl IntoLogData) -> Result<()>

Source

pub fn emitted_events(&self) -> &Vec<LogData>

Available on crate features test-utils only.
Source

pub fn clear_emitted_events(&mut self)

Available on crate features test-utils only.
Source

pub fn assert_emitted_events(&self, expected: Vec<impl IntoLogData>)

Available on crate features test-utils only.
Source§

impl StablecoinDEX

Source

pub fn address(&self) -> Address

Returns the StablecoinDEX address.

Source

pub fn initialize(&mut self) -> Result<()>

Initializes the stablecoin DEX precompile.

Source

fn next_order_id(&self) -> Result<u128>

Read next order ID (always at least 1)

Source

fn increment_next_order_id(&mut self) -> Result<()>

Increment next order ID

Source

pub fn balance_of(&self, user: Address, token: Address) -> Result<u128>

Returns the user’s DEX balance for token.

Source

pub fn min_price(&self) -> u32

Returns the minimum representable scaled price (MIN_PRICE).

Source

pub fn max_price(&self) -> u32

Returns the maximum representable scaled price (MAX_PRICE).

Source

fn validate_or_create_pair( &mut self, book: &Orderbook, token: Address, ) -> Result<()>

Validates that a trading pair exists or creates the pair

Source

pub fn get_order(&self, order_id: u128) -> Result<Order>

Fetches an active Order from storage by ID.

§Errors
  • OrderDoesNotExist — order has a zero maker (already filled/deleted) or has not yet been assigned (ID ≥ next order ID)
Source

fn set_balance( &mut self, user: Address, token: Address, amount: u128, ) -> Result<()>

Set user’s balance for a specific token

Source

fn increment_balance( &mut self, user: Address, token: Address, amount: u128, ) -> Result<()>

Add to user’s balance

Source

fn sub_balance( &mut self, user: Address, token: Address, amount: u128, ) -> Result<()>

Subtract from user’s balance.

Source

fn emit_order_filled( &mut self, order_id: u128, maker: Address, taker: Address, amount_filled: u128, partial_fill: bool, ) -> Result<()>

Emit the appropriate OrderFilled event

Source

fn transfer(&mut self, token: Address, to: Address, amount: u128) -> Result<()>

Transfer tokens, accounting for pathUSD

Source

fn transfer_from( &mut self, token: Address, from: Address, amount: u128, ) -> Result<()>

Transfer tokens from user, accounting for pathUSD

Source

fn decrement_balance_or_transfer_from( &mut self, user: Address, token: Address, amount: u128, ) -> Result<()>

Decrement user’s internal balance or transfer from external wallet

Source

pub fn quote_swap_exact_amount_out( &self, token_in: Address, token_out: Address, amount_out: u128, ) -> Result<u128>

Quotes the input amount required to receive exactly amount_out tokens, routing through one or more orderbooks without executing trades.

§Errors
  • IdenticalTokenstoken_in and token_out are the same address
  • InvalidToken — a token address does not have a valid TIP-20 prefix
  • PairDoesNotExist — no orderbook exists for one of the hops in the route
  • InsufficientLiquidity — not enough resting orders to fill amount_out
Source

pub fn quote_swap_exact_amount_in( &self, token_in: Address, token_out: Address, amount_in: u128, ) -> Result<u128>

Quotes the output amount received for exactly amount_in input tokens, routing through one or more orderbooks without executing trades.

§Errors
  • IdenticalTokenstoken_in and token_out are the same address
  • InvalidToken — a token address does not have a valid TIP-20 prefix
  • PairDoesNotExist — no orderbook exists for one of the hops in the route
  • InsufficientLiquidity — not enough resting orders to fill amount_in
Source

pub fn swap_exact_amount_in( &mut self, sender: Address, token_in: Address, token_out: Address, amount_in: u128, min_amount_out: u128, ) -> Result<u128>

Swaps amount_in of token_in for token_out, routing through one or more orderbooks. Deducts input via TIP20Token transfer or DEX balance, then fills orders at best price per hop.

§Errors
  • InvalidBaseToken — token address does not have a valid TIP-20 prefix
  • PairNotFound — no orderbook exists for the token pair
  • InsufficientOutput — final output amount falls below min_amount_out
  • InsufficientBalance — sender balance lower than required input
Source

pub fn swap_exact_amount_out( &mut self, sender: Address, token_in: Address, token_out: Address, amount_out: u128, max_amount_in: u128, ) -> Result<u128>

Swaps to receive exactly amount_out of token_out, routing through one or more orderbooks. Works backwards from output to compute input, then deducts via TIP20Token or DEX balance.

§Errors
  • InvalidBaseToken — token address does not have a valid TIP-20 prefix
  • PairNotFound — no orderbook exists for the token pair
  • MaxInputExceeded — required input exceeds max_amount_in
  • InsufficientBalance — sender balance lower than required input
Source

pub fn get_price_level( &self, base: Address, tick: i16, is_bid: bool, ) -> Result<TickLevel>

Returns the TickLevel for a given base token, tick, and side. Looks up the quote token via TIP20Token and derives the book key.

§Errors
  • InvalidBaseTokenbase address does not resolve to a valid TIP20Token
Source

pub fn books(&self, pair_key: B256) -> Result<Orderbook>

Returns the Orderbook for a given pair key.

Source

pub fn get_book_keys(&self) -> Result<Vec<B256>>

Returns all registered orderbook keys.

Source

pub fn tick_to_price(&self, tick: i16) -> Result<u32>

Converts a relative tick to a scaled price. On T2+ validates TICK_SPACING alignment.

§Errors
  • InvalidTick — tick is not aligned to TICK_SPACING (T2+ only)
Source

pub fn price_to_tick(&self, price: u32) -> Result<i16>

Converts a scaled price to a relative tick. On T2+ validates TICK_SPACING alignment.

§Errors
  • TickOutOfBounds — price is outside the [MIN_PRICE, MAX_PRICE] range
  • InvalidTick — resulting tick is not aligned to TICK_SPACING (T2+ only)
Source

pub fn create_pair(&mut self, base: Address) -> Result<B256>

Creates a new trading pair between base and its quote token. Both must be USD-denominated tokens validated via TIP20Factory. Reverts if the pair already exists.

§Errors
  • InvalidBaseToken — token address does not have a valid TIP-20 prefix
  • InvalidCurrency — both tokens must be USD-denominated (validated via TIP20Factory).
  • PairAlreadyExists — an orderbook for this pair is already initialized
Source

pub fn place( &mut self, sender: Address, token: Address, amount: u128, is_bid: bool, tick: i16, ) -> Result<u128>

Places a limit order on the orderbook for token against its quote token. Escrows the appropriate amount via TIP20Token transfer or DEX balance and enforces compliance via the TIP403Registry. Auto-creates the trading pair if needed.

§Errors
  • InvalidBaseToken — token address does not have a valid TIP-20 prefix
  • TickOutOfBounds — tick is outside the allowed [MIN_TICK, MAX_TICK] range
  • InvalidTick — tick is not aligned to TICK_SPACING
  • BelowMinimumOrderSize — order amount is below MIN_ORDER_AMOUNT
  • InsufficientBalance — sender balance lower than required escrow
  • PolicyForbids — TIP-403 policy rejects the token transfer
§Returns

The assigned order ID

Source

fn commit_order_to_book(&mut self, order: Order) -> Result<()>

Commits an order to the specified orderbook, updating tick bits, best bid/ask, and total liquidity

Source

pub fn place_flip( &mut self, sender: Address, token: Address, amount: u128, is_bid: bool, tick: i16, flip_tick: i16, internal_balance_only: bool, ) -> Result<u128>

Places a flip order that auto-reverses to the opposite side when fully filled, acting as perpetual liquidity. Escrows tokens via TIP20Token and enforces compliance via TIP403Registry. For bids flip_tick must be > tick; for asks, < tick.

§Errors
  • InvalidBaseToken — token address does not have a valid TIP-20 prefix
  • TickOutOfBounds — tick or flip_tick outside [MIN_TICK, MAX_TICK]
  • InvalidTick — tick is not aligned to TICK_SPACING
  • InvalidFlipTick — flip_tick on wrong side of tick for order direction
  • BelowMinimumOrderSize — order amount is below MIN_ORDER_AMOUNT
  • InsufficientBalance — sender balance lower than required escrow
  • PolicyForbids — TIP-403 policy rejects the token transfer
Source

fn partial_fill_order( &mut self, order: &mut Order, level: &mut TickLevel, fill_amount: u128, taker: Address, ) -> Result<u128>

Partially fill an order with the specified amount. Fill amount is denominated in base token.

Source

fn fill_order( &mut self, book_key: B256, order: &mut Order, level: TickLevel, taker: Address, ) -> Result<(u128, Option<(TickLevel, Order)>)>

Fill an order and delete from storage. Returns the next best order and price level.

Source

fn fill_orders_exact_out( &mut self, book_key: B256, bid: bool, amount_out: u128, taker: Address, ) -> Result<u128>

Fill orders for exact output amount

Source

fn fill_orders_exact_in( &mut self, book_key: B256, bid: bool, amount_in: u128, taker: Address, ) -> Result<u128>

Fill orders with exact amount in

Source

fn get_best_price_level( &mut self, book_key: B256, is_bid: bool, ) -> Result<TickLevel>

Helper function to get best tick from orderbook

Source

pub fn cancel(&mut self, sender: Address, order_id: u128) -> Result<()>

Cancels an active order and refunds escrowed tokens to the maker. Only the order maker can cancel their own orders.

§Errors
  • OrderDoesNotExist — order ID not found or already fully filled
  • Unauthorized — only the order maker can cancel their order
Source

fn cancel_active_order(&mut self, order: Order) -> Result<()>

Cancel an active order (already in the orderbook)

Source

pub fn cancel_stale_order(&mut self, order_id: u128) -> Result<()>

Cancels an order whose maker is blocked by TIP403Registry policy, allowing anyone to clean up stale liquidity.

TIP-1015: T2+ checks sender authorization (maker must be able to send escrowed tokens)

§Errors
  • OrderDoesNotExist — order ID not found or already fully filled
  • OrderNotStale — order maker is still authorized by TIP-403 policy
Source

pub fn withdraw( &mut self, user: Address, token: Address, amount: u128, ) -> Result<()>

Withdraws amount from the caller’s DEX balance, transferring tokens back via TIP20Token.

§Errors
  • InsufficientBalance — DEX balance lower than withdrawal amount
Source

fn quote_exact_out( &self, book_key: B256, amount_out: u128, is_bid: bool, ) -> Result<u128>

Quote exact output amount without executing trades

Source

fn find_trade_path( &self, token_in: Address, token_out: Address, ) -> Result<Vec<(B256, bool)>>

Find the trade path between two tokens Returns a vector of (book_key, base_for_quote) tuples for each hop Also validates that all pairs exist

Source

fn validate_and_build_route( &self, path: &[Address], ) -> Result<Vec<(B256, bool)>>

Validates that all pairs in the path exist and returns book keys with direction info

Source

fn find_path_to_root(&self, token: Address) -> Result<Vec<Address>>

Find the path from a token to the root (pathUSD) Returns a vector of addresses starting with the token and ending with pathUSD

Source

fn quote_exact_in( &self, book_key: B256, amount_in: u128, is_bid: bool, ) -> Result<u128>

Quote exact input amount without executing trades

Source§

impl StablecoinDEX

Source

pub fn create_precompile(cfg: &CfgEnv<TempoHardfork>) -> DynPrecompile

Creates the EVM precompile for this type.

Trait Implementations§

Source§

impl ContractStorage for StablecoinDEX

Source§

fn address(&self) -> Address

Contract address.
Source§

fn storage(&self) -> &StorageCtx

Contract storage accessor.
Source§

fn storage_mut(&mut self) -> &mut StorageCtx

Contract storage mutable accessor.
Source§

fn is_initialized(&self) -> Result<bool>

Returns true if the contract has been initialized (has bytecode deployed).
Source§

impl Default for StablecoinDEX

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Precompile for StablecoinDEX

Source§

fn call(&mut self, calldata: &[u8], msg_sender: Address) -> PrecompileResult

Dispatches an EVM call to this precompile. 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
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> 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<TxEnv, T> FromRecoveredTx<&T> for TxEnv
where TxEnv: FromRecoveredTx<T>,

§

fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv

Builds a [TxEnv] from a transaction and a sender address.
§

impl<TxEnv, T> FromTxWithEncoded<&T> for TxEnv
where TxEnv: FromTxWithEncoded<T>,

§

fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv

Builds a [TxEnv] from a transaction, its sender, and encoded transaction bytes.
§

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> Instrument for T

Source§

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

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

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,

Available on crate feature propagate-header only.
Propagate a header from the request to the response. Read more
§

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

Available on crate feature add-extension only.
Add some shareable value to request extensions. Read more
§

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

Available on crate feature map-request-body only.
Apply a transformation to the request body. Read more
§

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

Available on crate feature map-response-body only.
Apply a transformation to the response body. Read more
§

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

Available on crate features compression-br or compression-deflate or compression-gzip or compression-zstd only.
Compresses response bodies. Read more
§

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

Available on crate features decompression-br or decompression-deflate or decompression-gzip or decompression-zstd only.
Decompress response bodies. Read more
§

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

Available on crate feature trace only.
High level tracing that classifies responses using HTTP status codes. Read more
§

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

Available on crate feature trace only.
High level tracing that classifies responses using gRPC headers. Read more
§

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

Available on crate feature follow-redirect only.
Follow redirect resposes using the Standard policy. Read more
§

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

Available on crate feature sensitive-headers only.
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,

Available on crate feature sensitive-headers only.
Mark headers as sensitive on requests. Read more
§

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

Available on crate feature sensitive-headers only.
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,

Available on crate feature set-header only.
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,

Available on crate feature set-header only.
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,

Available on crate feature set-header only.
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,

Available on crate feature set-header only.
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,

Available on crate feature set-header only.
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,

Available on crate feature set-header only.
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,

Available on crate feature request-id only.
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,

Available on crate feature request-id only.
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,

Available on crate feature request-id only.
Propgate request ids from requests to responses. Read more
§

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

Available on crate feature request-id only.
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,

Available on crate feature catch-panic only.
Catch panics and convert them into 500 Internal Server responses. Read more
§

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

Available on crate feature limit only.
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,

Available on crate feature normalize-path only.
Remove trailing slashes from paths. Read more
§

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

Available on crate feature normalize-path only.
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
Source§

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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

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

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 536 bytes