pub struct MarginManager {
pub span_margin_service: SpanMarginService,
pub standard_margin_service: StandardMarginService,
}Expand description
Margin manager encapsulating SPAN and Standard margin services.
Methods borrow &EngineDeps for access to caches, portfolio service, etc.
Fields§
§span_margin_service: SpanMarginServiceSPAN scenario-based margin service (Portfolio mode).
standard_margin_service: StandardMarginServiceDeribit-style linear margin service (Standard mode).
Implementations§
Source§impl MarginManager
impl MarginManager
pub fn new_with_vol_oracle( config: &Config, vol_oracle: Option<SharedVolOracle>, ) -> Self
Sourcepub fn check_margin_for_order(
&self,
deps: &EngineDeps,
engine_positions: &EnginePositionMap,
balance_ledger: &HashMap<WalletAddress, Decimal>,
wallet: &WalletAddress,
order_info: &OrderInfo,
order_index: &EngineOrderIndex,
) -> Result<(), String>
pub fn check_margin_for_order( &self, deps: &EngineDeps, engine_positions: &EnginePositionMap, balance_ledger: &HashMap<WalletAddress, Decimal>, wallet: &WalletAddress, order_info: &OrderInfo, order_index: &EngineOrderIndex, ) -> Result<(), String>
Unified margin check for both option and perp orders.
Branches on margin mode:
- Portfolio mode: SPAN-based scenario margin
- Standard mode: Deribit-style linear margin
Sourcepub fn check_margin_for_orders(
&self,
deps: &EngineDeps,
engine_positions: &EnginePositionMap,
balance_ledger: &HashMap<WalletAddress, Decimal>,
wallet: &WalletAddress,
proposed_orders: &[OrderInfo],
order_index: &EngineOrderIndex,
) -> Result<(), String>
pub fn check_margin_for_orders( &self, deps: &EngineDeps, engine_positions: &EnginePositionMap, balance_ledger: &HashMap<WalletAddress, Decimal>, wallet: &WalletAddress, proposed_orders: &[OrderInfo], order_index: &EngineOrderIndex, ) -> Result<(), String>
Margin check for a batch of orders that must be accepted or rejected together, e.g. a multi-leg RFQ where leg N-1 hedges leg N and the combination is healthy even though individual legs would not pass margin in isolation.
Branches on the wallet’s configured margin mode, matching the single-order admission path. RFQ is an immediately executed product, so the Standard path checks the post-execution account state rather than treating the proposed legs as resting open orders.
Sourcepub fn check_margin_for_quote_provider_orders(
&self,
deps: &EngineDeps,
engine_positions: &EnginePositionMap,
balance_ledger: &HashMap<WalletAddress, Decimal>,
wallet: &WalletAddress,
proposed_orders: &[OrderInfo],
order_index: &EngineOrderIndex,
) -> Result<(), String>
pub fn check_margin_for_quote_provider_orders( &self, deps: &EngineDeps, engine_positions: &EnginePositionMap, balance_ledger: &HashMap<WalletAddress, Decimal>, wallet: &WalletAddress, proposed_orders: &[OrderInfo], order_index: &EngineOrderIndex, ) -> Result<(), String>
RFQ quote-provider margin check.
The RFQ gateway only sends active registered quote providers to this engine path. Let those providers open Standard-margin shorts while keeping the normal Standard short ban for takers and orderbook orders.
fn check_margin_for_orders_with_standard_short_bypass( &self, deps: &EngineDeps, engine_positions: &EnginePositionMap, balance_ledger: &HashMap<WalletAddress, Decimal>, wallet: &WalletAddress, proposed_orders: &[OrderInfo], order_index: &EngineOrderIndex, allow_standard_short_bypass: bool, ) -> Result<(), String>
Sourcepub fn get_margin_mode(
&self,
deps: &EngineDeps,
wallet: &WalletAddress,
) -> Result<MarginMode, String>
pub fn get_margin_mode( &self, deps: &EngineDeps, wallet: &WalletAddress, ) -> Result<MarginMode, String>
Get the margin mode for a wallet.
Sourcepub fn get_risk_account(
&self,
deps: &EngineDeps,
engine_positions: &EnginePositionMap,
balance_ledger: &HashMap<WalletAddress, Decimal>,
wallet: &WalletAddress,
) -> Result<Account, String>
pub fn get_risk_account( &self, deps: &EngineDeps, engine_positions: &EnginePositionMap, balance_ledger: &HashMap<WalletAddress, Decimal>, wallet: &WalletAddress, ) -> Result<Account, String>
Build a risk-ready Account from engine balances and positions.
Sourcepub fn build_account_for_risk(
&self,
deps: &EngineDeps,
engine_positions: &EnginePositionMap,
_balance_ledger: &HashMap<WalletAddress, Decimal>,
wallet: &WalletAddress,
) -> Result<Account, String>
pub fn build_account_for_risk( &self, deps: &EngineDeps, engine_positions: &EnginePositionMap, _balance_ledger: &HashMap<WalletAddress, Decimal>, wallet: &WalletAddress, ) -> Result<Account, String>
Build a risk account including open orders when PM is enabled.
Sourcepub fn get_span_margin_for_wallet(
&self,
deps: &EngineDeps,
engine_positions: &EnginePositionMap,
balance_ledger: &HashMap<WalletAddress, Decimal>,
wallet: &WalletAddress,
) -> Result<Option<MarginDetails>, String>
pub fn get_span_margin_for_wallet( &self, deps: &EngineDeps, engine_positions: &EnginePositionMap, balance_ledger: &HashMap<WalletAddress, Decimal>, wallet: &WalletAddress, ) -> Result<Option<MarginDetails>, String>
Get SPAN margin details for a wallet’s executed state.
Sourcefn build_spot_prices_for_balance(
&self,
deps: &EngineDeps,
balance: &PortfolioBalance,
) -> HashMap<String, f64>
fn build_spot_prices_for_balance( &self, deps: &EngineDeps, balance: &PortfolioBalance, ) -> HashMap<String, f64>
Build spot prices map for a portfolio balance.
Sourcepub fn get_spot_price_for_margin(
&self,
deps: &EngineDeps,
underlying: &str,
) -> Result<f64, String>
pub fn get_spot_price_for_margin( &self, deps: &EngineDeps, underlying: &str, ) -> Result<f64, String>
Get spot price for an underlying, returning an error if unavailable.
Sourcepub fn fetch_open_orders(
&self,
order_index: &EngineOrderIndex,
wallet: &WalletAddress,
) -> Vec<ApiOrder>
pub fn fetch_open_orders( &self, order_index: &EngineOrderIndex, wallet: &WalletAddress, ) -> Vec<ApiOrder>
Fetch all open orders for a wallet from the in-process order index.
Sourcepub fn create_simulated_order(
&self,
order_info: &OrderInfo,
wallet: &WalletAddress,
) -> ApiOrder
pub fn create_simulated_order( &self, order_info: &OrderInfo, wallet: &WalletAddress, ) -> ApiOrder
Create a simulated order from OrderInfo for margin checking.
Sourcefn check_margin_portfolio(
&self,
deps: &EngineDeps,
engine_positions: &EnginePositionMap,
balance_ledger: &HashMap<WalletAddress, Decimal>,
wallet: &WalletAddress,
order_info: &OrderInfo,
order_index: &EngineOrderIndex,
) -> Result<(), String>
fn check_margin_portfolio( &self, deps: &EngineDeps, engine_positions: &EnginePositionMap, balance_ledger: &HashMap<WalletAddress, Decimal>, wallet: &WalletAddress, order_info: &OrderInfo, order_index: &EngineOrderIndex, ) -> Result<(), String>
Portfolio margin check using SPAN scenarios.
Sourcefn check_margin_standard(
&self,
deps: &EngineDeps,
engine_positions: &EnginePositionMap,
balance_ledger: &HashMap<WalletAddress, Decimal>,
wallet: &WalletAddress,
order_info: &OrderInfo,
order_index: &EngineOrderIndex,
) -> Result<(), String>
fn check_margin_standard( &self, deps: &EngineDeps, engine_positions: &EnginePositionMap, balance_ledger: &HashMap<WalletAddress, Decimal>, wallet: &WalletAddress, order_info: &OrderInfo, order_index: &EngineOrderIndex, ) -> Result<(), String>
Standard margin check using Deribit-style linear margin.
fn check_margin_standard_for_orders( &self, deps: &EngineDeps, engine_positions: &EnginePositionMap, balance_ledger: &HashMap<WalletAddress, Decimal>, wallet: &WalletAddress, proposed_orders: &[OrderInfo], order_index: &EngineOrderIndex, allow_standard_short_bypass: bool, ) -> Result<(), String>
fn reject_standard_net_short_order( &self, engine_positions: &EnginePositionMap, wallet: &WalletAddress, order_info: &OrderInfo, order_index: &EngineOrderIndex, ) -> Result<(), String>
fn reject_standard_net_short_orders( &self, engine_positions: &EnginePositionMap, wallet: &WalletAddress, proposed_orders: &[OrderInfo], order_index: &EngineOrderIndex, ) -> Result<(), String>
fn add_open_sell_orders_to_standard_account( &self, deps: &EngineDeps, account: &mut StandardAccount, wallet: &WalletAddress, order_index: &EngineOrderIndex, ) -> Result<(), String>
Sourcefn build_hypothetical_account_for_orders(
&self,
deps: &EngineDeps,
engine_positions: &EnginePositionMap,
balance_ledger: &HashMap<WalletAddress, Decimal>,
wallet: &WalletAddress,
proposed_orders: &[OrderInfo],
order_index: &EngineOrderIndex,
) -> Result<Account, String>
fn build_hypothetical_account_for_orders( &self, deps: &EngineDeps, engine_positions: &EnginePositionMap, balance_ledger: &HashMap<WalletAddress, Decimal>, wallet: &WalletAddress, proposed_orders: &[OrderInfo], order_index: &EngineOrderIndex, ) -> Result<Account, String>
Build a hypothetical Account representing the state if every
proposed_order fills on top of the wallet’s current executed
state plus its existing open orders. Used by
check_margin_for_orders to score multi-leg RFQ commands as a
single portfolio snapshot.
Sourcefn build_hypothetical_account_for_order(
&self,
deps: &EngineDeps,
engine_positions: &EnginePositionMap,
balance_ledger: &HashMap<WalletAddress, Decimal>,
wallet: &WalletAddress,
order_info: &OrderInfo,
order_index: &EngineOrderIndex,
) -> Result<Account, String>
fn build_hypothetical_account_for_order( &self, deps: &EngineDeps, engine_positions: &EnginePositionMap, balance_ledger: &HashMap<WalletAddress, Decimal>, wallet: &WalletAddress, order_info: &OrderInfo, order_index: &EngineOrderIndex, ) -> Result<Account, String>
Build a hypothetical Account representing the state if the proposed order fills.
Sourcefn apply_order_to_account(
&self,
deps: &EngineDeps,
account: &mut Account,
order: &ApiOrder,
spot_prices: &HashMap<String, f64>,
) -> Result<(), String>
fn apply_order_to_account( &self, deps: &EngineDeps, account: &mut Account, order: &ApiOrder, spot_prices: &HashMap<String, f64>, ) -> Result<(), String>
Apply an order as a hypothetical fill to an account’s portfolio.
Sourcepub fn run_margin_on_account(
&self,
account: &Account,
) -> Result<Option<MarginDetails>, String>
pub fn run_margin_on_account( &self, account: &Account, ) -> Result<Option<MarginDetails>, String>
Run margin calculation on an Account using the MarginService.
pub fn run_margin_on_account_with_deps( &self, account: &Account, deps: &EngineDeps, ) -> Result<Option<MarginDetails>, String>
fn run_margin_on_account_at( &self, account: &Account, now_ts: i64, ) -> Result<Option<MarginDetails>, String>
Sourcepub fn check_tier_restrictions(
&self,
deps: &EngineDeps,
engine_positions: &EnginePositionMap,
balance_ledger: &HashMap<WalletAddress, Decimal>,
wallet: &WalletAddress,
order_info: &OrderInfo,
order_index: &EngineOrderIndex,
) -> Result<(), String>
pub fn check_tier_restrictions( &self, deps: &EngineDeps, engine_positions: &EnginePositionMap, balance_ledger: &HashMap<WalletAddress, Decimal>, wallet: &WalletAddress, order_info: &OrderInfo, order_index: &EngineOrderIndex, ) -> Result<(), String>
Check tier restrictions (tier1 can only go long).
Auto Trait Implementations§
impl Freeze for MarginManager
impl !RefUnwindSafe for MarginManager
impl Send for MarginManager
impl Sync for MarginManager
impl Unpin for MarginManager
impl UnsafeUnpin for MarginManager
impl !UnwindSafe for MarginManager
Blanket Implementations§
§impl<T> AggregateExpressionMethods for T
impl<T> AggregateExpressionMethods for T
§fn aggregate_distinct(self) -> Self::Outputwhere
Self: DistinctDsl,
fn aggregate_distinct(self) -> Self::Outputwhere
Self: DistinctDsl,
DISTINCT modifier for aggregate functions Read more§fn aggregate_all(self) -> Self::Outputwhere
Self: AllDsl,
fn aggregate_all(self) -> Self::Outputwhere
Self: AllDsl,
ALL modifier for aggregate functions Read more§fn aggregate_filter<P>(self, f: P) -> Self::Outputwhere
P: AsExpression<Bool>,
Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,
fn aggregate_filter<P>(self, f: P) -> Self::Outputwhere
P: AsExpression<Bool>,
Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,
§fn aggregate_order<O>(self, o: O) -> Self::Outputwhere
Self: OrderAggregateDsl<O>,
fn aggregate_order<O>(self, o: O) -> Self::Outputwhere
Self: OrderAggregateDsl<O>,
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync 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<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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<T> IntoSql for T
impl<T> IntoSql for T
§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, Conn> RunQueryDsl<Conn> for T
impl<T, Conn> RunQueryDsl<Conn> for T
§fn execute<'conn, 'query>(
self,
conn: &'conn mut Conn,
) -> <Conn as AsyncConnectionCore>::ExecuteFuture<'conn, 'query>where
Conn: AsyncConnectionCore + Send,
Self: ExecuteDsl<Conn> + 'query,
fn execute<'conn, 'query>(
self,
conn: &'conn mut Conn,
) -> <Conn as AsyncConnectionCore>::ExecuteFuture<'conn, 'query>where
Conn: AsyncConnectionCore + Send,
Self: ExecuteDsl<Conn> + 'query,
§fn load<'query, 'conn, U>(
self,
conn: &'conn mut Conn,
) -> AndThen<Self::LoadFuture<'conn>, TryCollect<Self::Stream<'conn>, Vec<U>>>where
U: Send,
Conn: AsyncConnectionCore,
Self: LoadQuery<'query, Conn, U> + 'query,
fn load<'query, 'conn, U>(
self,
conn: &'conn mut Conn,
) -> AndThen<Self::LoadFuture<'conn>, TryCollect<Self::Stream<'conn>, Vec<U>>>where
U: Send,
Conn: AsyncConnectionCore,
Self: LoadQuery<'query, Conn, U> + 'query,
§fn load_stream<'conn, 'query, U>(
self,
conn: &'conn mut Conn,
) -> Self::LoadFuture<'conn>where
Conn: AsyncConnectionCore,
U: 'conn,
Self: LoadQuery<'query, Conn, U> + 'query,
fn load_stream<'conn, 'query, U>(
self,
conn: &'conn mut Conn,
) -> Self::LoadFuture<'conn>where
Conn: AsyncConnectionCore,
U: 'conn,
Self: LoadQuery<'query, Conn, U> + 'query,
Stream] with the returned rows. Read more§fn get_result<'query, 'conn, U>(
self,
conn: &'conn mut Conn,
) -> AndThen<Self::LoadFuture<'conn>, LoadNext<Pin<Box<Self::Stream<'conn>>>>>where
U: Send + 'conn,
Conn: AsyncConnectionCore,
Self: LoadQuery<'query, Conn, U> + 'query,
fn get_result<'query, 'conn, U>(
self,
conn: &'conn mut Conn,
) -> AndThen<Self::LoadFuture<'conn>, LoadNext<Pin<Box<Self::Stream<'conn>>>>>where
U: Send + 'conn,
Conn: AsyncConnectionCore,
Self: LoadQuery<'query, Conn, U> + 'query,
§fn get_results<'query, 'conn, U>(
self,
conn: &'conn mut Conn,
) -> AndThen<Self::LoadFuture<'conn>, TryCollect<Self::Stream<'conn>, Vec<U>>>where
U: Send,
Conn: AsyncConnectionCore,
Self: LoadQuery<'query, Conn, U> + 'query,
fn get_results<'query, 'conn, U>(
self,
conn: &'conn mut Conn,
) -> AndThen<Self::LoadFuture<'conn>, TryCollect<Self::Stream<'conn>, Vec<U>>>where
U: Send,
Conn: AsyncConnectionCore,
Self: LoadQuery<'query, Conn, U> + 'query,
Vec with the affected rows. Read more§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.