pub struct StablecoinExchange {
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 active_order_id: <u128 as StorableType>::Handler,
pub pending_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§active_order_id: <u128 as StorableType>::Handler§pending_order_id: <u128 as StorableType>::Handler§book_keys: <Vec<B256> as StorableType>::Handler§address: Address§storage: StorageCtxImplementations§
Source§impl StablecoinExchange
impl StablecoinExchange
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates an instance of the precompile.
Caution: This does not initialize the account, see Self::initialize.
fn __new(address: Address) -> Self
fn __initialize(&mut self) -> Result<()>
fn emit_event(&mut self, event: impl IntoLogData) -> Result<()>
fn emitted_events(&self) -> &Vec<LogData>
test-utils only.fn assert_emitted_events(&self, expected: Vec<impl IntoLogData>)
test-utils only.Source§impl StablecoinExchange
impl StablecoinExchange
Sourcepub fn initialize(&mut self) -> Result<()>
pub fn initialize(&mut self) -> Result<()>
Initializes the contract
This ensures the StablecoinExchange isn’t empty and prevents state clear.
Sourcefn get_pending_order_id(&self) -> Result<u128>
fn get_pending_order_id(&self) -> Result<u128>
Read pending order ID
Sourcefn set_pending_order_id(&mut self, order_id: u128) -> Result<()>
fn set_pending_order_id(&mut self, order_id: u128) -> Result<()>
Set pending order ID
Sourcefn get_active_order_id(&self) -> Result<u128>
fn get_active_order_id(&self) -> Result<u128>
Read active order ID
Sourcefn set_active_order_id(&mut self, order_id: u128) -> Result<()>
fn set_active_order_id(&mut self, order_id: u128) -> Result<()>
Set active order ID
Sourcefn increment_pending_order_id(&mut self) -> Result<u128>
fn increment_pending_order_id(&mut self) -> Result<u128>
Increment and return the pending order id
Sourcepub fn balance_of(&self, user: Address, token: Address) -> Result<u128>
pub fn balance_of(&self, user: Address, token: Address) -> Result<u128>
Get user’s balance for a specific token
Sourcefn validate_or_create_pair(
&mut self,
book: &Orderbook,
token: Address,
) -> Result<()>
fn validate_or_create_pair( &mut self, book: &Orderbook, token: Address, ) -> Result<()>
Validates that a trading pair exists or creates the pair if the chain height is post allegretto hardfork
Sourcepub fn get_order(&self, order_id: u128) -> Result<Order>
pub fn get_order(&self, order_id: u128) -> Result<Order>
Fetch order from storage. If the order is currently pending or filled, this function returns
StablecoinExchangeError::OrderDoesNotExist
Sourcefn set_balance(
&mut self,
user: Address,
token: Address,
amount: u128,
) -> Result<()>
fn set_balance( &mut self, user: Address, token: Address, amount: u128, ) -> Result<()>
Set user’s balance for a specific token
Sourcefn increment_balance(
&mut self,
user: Address,
token: Address,
amount: u128,
) -> Result<()>
fn increment_balance( &mut self, user: Address, token: Address, amount: u128, ) -> Result<()>
Add to user’s balance
Sourcefn sub_balance(
&mut self,
user: Address,
token: Address,
amount: u128,
) -> Result<()>
fn sub_balance( &mut self, user: Address, token: Address, amount: u128, ) -> Result<()>
Subtract from user’s balance
Sourcefn emit_order_filled(
&mut self,
order_id: u128,
maker: Address,
taker: Address,
amount_filled: u128,
partial_fill: bool,
) -> Result<()>
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 based on hardfork Pre-Allegretto: emits OrderFilled (without taker) Post-Allegretto: emits OrderFilled (with taker)
Sourcefn transfer(&mut self, token: Address, to: Address, amount: u128) -> Result<()>
fn transfer(&mut self, token: Address, to: Address, amount: u128) -> Result<()>
Transfer tokens, accounting for pathUSD
Sourcefn transfer_from(
&mut self,
token: Address,
from: Address,
amount: u128,
) -> Result<()>
fn transfer_from( &mut self, token: Address, from: Address, amount: u128, ) -> Result<()>
Transfer tokens from user, accounting for pathUSD
Sourcefn decrement_balance_or_transfer_from(
&mut self,
user: Address,
token: Address,
amount: u128,
) -> Result<()>
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
pub fn quote_swap_exact_amount_out( &self, token_in: Address, token_out: Address, amount_out: u128, ) -> Result<u128>
pub fn quote_swap_exact_amount_in( &self, token_in: Address, token_out: Address, amount_in: u128, ) -> Result<u128>
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>
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>
Sourcepub fn pair_key(&self, token_a: Address, token_b: Address) -> B256
pub fn pair_key(&self, token_a: Address, token_b: Address) -> B256
Generate deterministic key for token pair
Sourcepub fn get_price_level(
&self,
base: Address,
tick: i16,
is_bid: bool,
) -> Result<TickLevel>
pub fn get_price_level( &self, base: Address, tick: i16, is_bid: bool, ) -> Result<TickLevel>
Get price level information
Sourcepub fn active_order_id(&self) -> Result<u128>
pub fn active_order_id(&self) -> Result<u128>
Get active order ID
Sourcepub fn pending_order_id(&self) -> Result<u128>
pub fn pending_order_id(&self) -> Result<u128>
Get pending order ID
Sourcepub fn get_book_keys(&self) -> Result<Vec<B256>>
pub fn get_book_keys(&self) -> Result<Vec<B256>>
Get all book keys
Sourcepub fn price_to_tick(&self, price: u32) -> Result<i16>
pub fn price_to_tick(&self, price: u32) -> Result<i16>
Convert scaled price to relative tick Post-Moderato: validates price is within [MIN_PRICE, MAX_PRICE] Pre-Moderato: no validation (legacy behavior)
pub fn create_pair(&mut self, base: Address) -> Result<B256>
Sourcepub fn place(
&mut self,
sender: Address,
token: Address,
amount: u128,
is_bid: bool,
tick: i16,
) -> Result<u128>
pub fn place( &mut self, sender: Address, token: Address, amount: u128, is_bid: bool, tick: i16, ) -> Result<u128>
Place a limit order on the orderbook
Only supports placing an order on a pair between a token and its quote token. The order is queued in the pending queue and will be processed at end of block.
§Arguments
token- The token to trade (not the quote token)amount- Order amount in the tokenis_bid- True for buy orders (using quote token to buy token), false for sell orderstick- Price tick: (price - 1) * 1000, where price is denominated in the quote token
§Returns
The assigned order ID
Sourcepub fn place_flip(
&mut self,
sender: Address,
token: Address,
amount: u128,
is_bid: bool,
tick: i16,
flip_tick: i16,
) -> Result<u128>
pub fn place_flip( &mut self, sender: Address, token: Address, amount: u128, is_bid: bool, tick: i16, flip_tick: i16, ) -> Result<u128>
Place a flip order that auto-flips when filled
Flip orders automatically create a new order on the opposite side when completely filled. For bids: flip_tick must be > tick For asks: flip_tick must be < tick
Sourcepub fn execute_block(&mut self, sender: Address) -> Result<()>
pub fn execute_block(&mut self, sender: Address) -> Result<()>
Process all pending orders into the active orderbook
Only callable by the protocol via system transaction (sender must be Address::ZERO)
Sourcefn process_pending_order(&mut self, order_id: u128) -> Result<()>
fn process_pending_order(&mut self, order_id: u128) -> Result<()>
Process a single pending order into the active orderbook
Sourcefn partial_fill_order(
&mut self,
order: &mut Order,
level: &mut TickLevel,
fill_amount: u128,
taker: Address,
) -> Result<u128>
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
Sourcefn fill_order(
&mut self,
book_key: B256,
order: &mut Order,
level: TickLevel,
taker: Address,
) -> Result<(u128, Option<(TickLevel, Order)>)>
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.
Sourcefn fill_orders_exact_out_post_moderato(
&mut self,
book_key: B256,
bid: bool,
amount_out: u128,
taker: Address,
) -> Result<u128>
fn fill_orders_exact_out_post_moderato( &mut self, book_key: B256, bid: bool, amount_out: u128, taker: Address, ) -> Result<u128>
Fill orders for exact output amount, post moderato hardfork
Sourcefn fill_orders_exact_out_pre_moderato(
&mut self,
book_key: B256,
bid: bool,
amount_out: u128,
max_amount_in: u128,
taker: Address,
) -> Result<u128>
fn fill_orders_exact_out_pre_moderato( &mut self, book_key: B256, bid: bool, amount_out: u128, max_amount_in: u128, taker: Address, ) -> Result<u128>
Fill orders for exact output amount, pre moderato hardfork
Sourcefn fill_orders_exact_in_post_moderato(
&mut self,
book_key: B256,
bid: bool,
amount_in: u128,
taker: Address,
) -> Result<u128>
fn fill_orders_exact_in_post_moderato( &mut self, book_key: B256, bid: bool, amount_in: u128, taker: Address, ) -> Result<u128>
Fill orders with exact amount in, post Moderato hardfork
Sourcefn fill_orders_exact_in_pre_moderato(
&mut self,
book_key: B256,
bid: bool,
amount_in: u128,
min_amount_out: u128,
taker: Address,
) -> Result<u128>
fn fill_orders_exact_in_pre_moderato( &mut self, book_key: B256, bid: bool, amount_in: u128, min_amount_out: u128, taker: Address, ) -> Result<u128>
Fill orders with exact amount in, pre Moderato hardfork
Sourcefn get_best_price_level(
&mut self,
book_key: B256,
is_bid: bool,
) -> Result<TickLevel>
fn get_best_price_level( &mut self, book_key: B256, is_bid: bool, ) -> Result<TickLevel>
Helper function to get best tick from orderbook
Sourcepub fn cancel(&mut self, sender: Address, order_id: u128) -> Result<()>
pub fn cancel(&mut self, sender: Address, order_id: u128) -> Result<()>
Cancel an order and refund tokens to maker Only the order maker can cancel their own order
Sourcefn cancel_pending_order(&mut self, order: Order) -> Result<()>
fn cancel_pending_order(&mut self, order: Order) -> Result<()>
Cancel a pending order (not yet in the active orderbook)
Sourcefn cancel_active_order(&mut self, order: Order) -> Result<()>
fn cancel_active_order(&mut self, order: Order) -> Result<()>
Cancel an active order (already in the orderbook)
Sourcepub fn withdraw(
&mut self,
user: Address,
token: Address,
amount: u128,
) -> Result<()>
pub fn withdraw( &mut self, user: Address, token: Address, amount: u128, ) -> Result<()>
Withdraw tokens from exchange balance
Sourcefn quote_exact_out(
&self,
book_key: B256,
amount_out: u128,
is_bid: bool,
) -> Result<u128>
fn quote_exact_out( &self, book_key: B256, amount_out: u128, is_bid: bool, ) -> Result<u128>
Quote exact output amount without executing trades
Sourcefn find_trade_path(
&self,
token_in: Address,
token_out: Address,
) -> Result<Vec<(B256, bool)>>
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
Sourcefn validate_and_build_route(
&self,
path: &[Address],
) -> Result<Vec<(B256, bool)>>
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
Sourcefn find_path_to_root(&self, token: Address) -> Result<Vec<Address>>
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
Trait Implementations§
Source§impl ContractStorage for StablecoinExchange
impl ContractStorage for StablecoinExchange
Source§impl Default for StablecoinExchange
impl Default for StablecoinExchange
Source§impl Precompile for StablecoinExchange
impl Precompile for StablecoinExchange
Auto Trait Implementations§
impl Freeze for StablecoinExchange
impl RefUnwindSafe for StablecoinExchange
impl Send for StablecoinExchange
impl Sync for StablecoinExchange
impl Unpin for StablecoinExchange
impl UnwindSafe for StablecoinExchange
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
§impl<T> Conv for T
impl<T> Conv for T
§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,
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,
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,
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,
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,
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,
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,
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,
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,
§impl<TxEnv, T> FromRecoveredTx<&T> for TxEnvwhere
TxEnv: FromRecoveredTx<T>,
impl<TxEnv, T> FromRecoveredTx<&T> for TxEnvwhere
TxEnv: FromRecoveredTx<T>,
§fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv
fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv
TxEnv] from a transaction and a sender address.§impl<TxEnv, T> FromTxWithEncoded<&T> for TxEnvwhere
TxEnv: FromTxWithEncoded<T>,
impl<TxEnv, T> FromTxWithEncoded<&T> for TxEnvwhere
TxEnv: FromTxWithEncoded<T>,
§fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv
fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv
TxEnv] from a transaction, its sender, and encoded transaction bytes.§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> 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 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>
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>,
Layered].§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling [Attribute] value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi [Quirk] value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the [Condition] value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);§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,
§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 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,
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
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
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
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-header only.§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-extension only.§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,
map-request-body only.§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,
map-response-body only.§fn compression(self) -> Compression<Self>where
Self: Sized,
fn compression(self) -> Compression<Self>where
Self: Sized,
compression-br or compression-deflate or compression-gzip or compression-zstd only.§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
decompression-br or decompression-deflate or decompression-gzip or decompression-zstd only.§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
trace only.§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
trace only.§fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
follow-redirect only.§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,
sensitive-headers only.§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,
sensitive-headers only.§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,
sensitive-headers only.§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,
set-header only.§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,
set-header only.§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,
set-header only.§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,
set-header only.§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,
set-header only.§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,
set-header only.§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,
request-id only.§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,
request-id only.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,
request-id only.§fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
request-id only.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-panic only.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,
limit only.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,
normalize-path only.§fn append_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
fn append_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
normalize-path only.§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
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
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
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
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
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
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
.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
.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
.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
.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
.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
.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
.tap_deref() only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> MaybeSend for Twhere
T: Send,
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: 376 bytes