Skip to main content

JitoClient

Struct JitoClient 

Source
pub struct JitoClient { /* private fields */ }
Expand description

The Client.

Implementations§

Source§

impl Client

Source

pub fn new(sender: RpcChannel) -> Self

Creates a new Client.

Source

pub fn send_bundle( &self, transactions: Vec<String>, config: Option<RpcSendTransactionConfig>, ) -> impl Future<Output = RpcResult<String>>

Sends a bundle of transactions to be processed atomically.

This RPC method accepts a bundle of transactions (Jito-compatible format) and processes them one by one in order against an isolated sandbox VM. The bundle is all-or-nothing: if any transaction in the bundle fails (simulation error, execution error, or verification error), every other transaction’s effects are discarded and the underlying VM is left byte-identical to its pre-bundle state. No Geyser event, no Simnet event, and no WebSocket subscriber notification is dispatched for a bundle that fails.

On full success, the sandbox’s state changes — account mutations, transaction storage writes, token-account index updates, write-version increments, etc. — are atomically committed onto the original VM under an exclusive writer guard, and Geyser/Simnet events plus WebSocket subscriber notifications (account, program, signature, logs) are fired onto the live event channels exactly as if each transaction had been submitted through the regular sendTransaction RPC.

§Parameters
  • transactions: An array of serialized transaction data (base64 or base58 encoded).
  • config: Optional configuration for encoding format.
§Returns
  • BoxFuture<Result<String>>: A future resolving to the bundle ID (SHA-256 hash of comma-separated signatures), or an error if any transaction in the bundle fails. Returning a future (rather than blocking) lets the JSON-RPC runtime drive the async sandbox execution without spawning a nested tokio runtime on an HTTP worker thread.
§Example Request (JSON-RPC)
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "sendBundle",
  "params": [
    ["base64EncodedTx1", "base64EncodedTx2"],
    { "encoding": "base64" }
  ]
}
§Notes
  • Bundles are limited to a maximum of 5 transactions, matching Jito’s limit.
  • Transactions are processed sequentially in the order provided against a single sandbox.
  • Atomicity is guaranteed: on any failure the original VM is unaffected.
  • The bundle ID is calculated as SHA-256 hash of comma-separated transaction signatures.
Source

pub fn get_bundle_statuses( &self, bundle_ids: Vec<String>, ) -> impl Future<Output = RpcResult<RpcResponse<Vec<Option<JitoBundleStatus>>>>>

Retrieves Jito-shaped status summaries for one or more previously submitted bundles.

Mirrors Jito’s wire protocol: the first positional parameter is an array of bundle IDs (max [MAX_BUNDLES_PER_QUERY]). For each requested id we resolve per-signature status via the same path as getSignatureStatuses and return a single aggregate status object per bundle, or null at that index when the bundle is unknown locally.

§Parameters
  • bundle_ids: Array of bundle identifiers returned by sendBundle. May contain up to [MAX_BUNDLES_PER_QUERY] entries; the empty array is rejected with invalid_params.
§Returns

On success, the JSON-RPC result is the standard Solana contextualized response shape:

  • context.slot: Context slot from the underlying status query (same idea as getSignatureStatuses).
  • value: An array with exactly one element per input bundle id, at the same index:
    • null when the bundle id is not known locally (no stored signatures — the id may be valid elsewhere, we simply have nothing to report).
    • A surfpool_types::JitoBundleStatus object otherwise, with:
      • bundle_id: The requested bundle id (snake_case wire field).
      • transactions: Base-58 signatures in bundle submission order (from local jito_bundles storage).
      • slot: Slot from the first per-signature status entry (bundle txs share a landing slot), or 0 if none yet.
      • confirmation_status: From that same first entry (defaults to processed when absent).
      • err: Ok if no transaction error was observed on any status; otherwise the first Err encountered (JSON-serialized like other Solana Result values, e.g. {"Ok": null} or {"Err": ...}).
§Example Request (JSON-RPC)
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getBundleStatuses",
  "params": [
    ["bundleIdHere", "anotherBundleId"]
  ]
}
§Example Response (JSON-RPC)
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "context": { "slot": 242806119 },
    "value": [
      {
        "bundle_id": "892b79ed49138bfb3aa5441f0df6e06ef34f9ee8f3976c15b323605bae0cf51d",
        "transactions": [
          "3bC2M9fiACSjkTXZDgeNAuQ4ScTsdKGwR42ytFdhUvikqTmBheUxfsR1fDVsM5ADCMMspuwGkdm1uKbU246x5aE3",
          "8t9hKYEYNbLvNqiSzP96S13XF1C2f1ro271Kdf7bkZ6EpjPLuDff1ywRy4gfaGSTubsM2FeYGDoT64ZwPm1cQUt"
        ],
        "slot": 242804011,
        "confirmation_status": "finalized",
        "err": { "Ok": null }
      },
      null
    ]
  }
}
§Notes
  • Bundles are stored locally as a mapping from bundle_id to a list of base-58 signatures.
  • Unknown bundle ids appear as null inside the value array; the outer result is never null (Jito-style: per-index reporting).
  • Per-signature status resolution uses the same logic as getSignatureStatuses (local store and optional remote datasource).
Source

pub fn simulate_bundle( &self, rpc_bundle_request: RpcBundleRequest, config: Option<RpcSimulateBundleConfig>, ) -> impl Future<Output = RpcResult<RpcResponse<RpcSimulateBundleResult>>>

Simulates a bundle of transactions sequentially against an isolated sandbox VM, without committing any of the resulting state changes onto the live VM.

This is the read-only counterpart to Self::send_bundle. Where send_bundle is all-or-nothing (every tx must succeed; on full success the sandbox is committed), simulate_bundle is all-tx-attempted-or-fail-fast: each transaction is processed in order against the sandbox, with subsequent transactions seeing the previous tx’s state mutations, but the moment one transaction errors the loop exits and remaining transactions are not simulated. The sandbox is always discarded — successful or not — so the live VM is byte-identical to its pre-call state regardless of outcome.

Per-tx the response carries:

  • err: None on success, the typed TransactionError on failure.
  • logs: program logs the SVM emitted while executing the tx.
  • units_consumed: compute units burned.
  • pre_execution_accounts / post_execution_accounts: pre/post snapshot of the accounts whose pubkeys the caller listed in RpcSimulateBundleConfig.{pre,post}_execution_accounts_configs[i]. Returned in UiAccountEncoding::Base64 (the only encoding simulateBundle supports — the request is rejected with invalid_params for any other encoding hint).
  • replacement_blockhash: the bank’s latest blockhash, but only when replace_recent_blockhash is true.
  • return_data: the program return data, when present.

The remaining fields on RpcSimulateBundleTransactionResult (pre_token_balances, post_token_balances, loaded_addresses, loaded_accounts_data_size, fee, pre_balances, post_balances) are returned as None. This matches Surfpool’s existing single-tx simulateTransaction behavior; populating them requires layout decoding of SPL Token accounts that has not yet been done on either path. Tracked for a follow-up PR.

§Parameters
  • rpc_bundle_request: Wrapper struct carrying the array of base64-encoded transactions. Mirrors Jito’s wire format.
  • config: Optional. When omitted the bundle simulates with no pre/post account snapshots, sigverify on, and the originally-encoded blockhashes preserved. When replace_recent_blockhash is true, skip_sig_verify MUST also be true (a resigned blockhash invalidates any pre-existing signature) — the request is otherwise rejected with invalid_params.
§Returns

RpcResponse<RpcSimulateBundleResult> — the standard Solana contextualized response shape. value.summary is Succeeded when every transaction in the bundle simulated cleanly, otherwise Failed { error, tx_signature } where error carries the typed RpcBundleExecutionError::TransactionFailure(signature, message) for the first failing tx. value.transaction_results[i] corresponds to rpc_bundle_request.encoded_transactions[i]; on early-exit failure the trailing indices contain the empty/skipped tx result (err: None, logs: None, etc.) — they were never simulated.

§Example Request (JSON-RPC)
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "simulateBundle",
  "params": [
    { "encodedTransactions": ["base64Tx1", "base64Tx2"] },
    {
      "preExecutionAccountsConfigs": [null, { "addresses": ["..."] }],
      "postExecutionAccountsConfigs": [null, { "addresses": ["..."] }],
      "skipSigVerify": true,
      "replaceRecentBlockhash": true
    }
  ]
}
§Notes
  • Bundles are limited to a maximum of [MAX_BUNDLE_SIZE] (5) transactions, matching sendBundle and Jito’s documented limit.
  • pre_execution_accounts_configs and post_execution_accounts_configs, when provided, MUST have the same length as the bundle.
  • simulation_bank is accepted for API parity; Surfpool always simulates against the working SVM regardless of value.
  • The sandbox’s storage overlays, buffered Geyser/Simnet events, and cloned LiteSVM state are dropped at end-of-call. No notification fires on the live event channels; no signature/logs subscriber is woken; no chain state is touched.

Trait Implementations§

Source§

impl Clone for Client

Source§

fn clone(&self) -> Client

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl From<RpcChannel> for Client

Source§

fn from(channel: RpcChannel) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> AggregateExpressionMethods for T

Source§

fn aggregate_distinct(self) -> Self::Output
where Self: DistinctDsl,

DISTINCT modifier for aggregate functions Read more
Source§

fn aggregate_all(self) -> Self::Output
where Self: AllDsl,

ALL modifier for aggregate functions Read more
Source§

fn aggregate_filter<P>(self, f: P) -> Self::Output
where P: AsExpression<Bool>, Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,

Add an aggregate function filter Read more
Source§

fn aggregate_order<O>(self, o: O) -> Self::Output
where Self: OrderAggregateDsl<O>,

Add an aggregate function order Read more
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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Conv for T

Source§

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

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

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

Source§

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

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

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

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

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

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

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

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

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

Source§

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

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

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

Source§

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

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

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

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

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> FmtForward for T

Source§

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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

impl<T> IntoSql for T

Source§

fn into_sql<T>(self) -> Self::Expression

Convert self to an expression for Diesel’s query builder. Read more
Source§

fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
where &'a Self: AsExpression<T>, T: SqlType + TypedExpressionType,

Convert &self to an expression for Diesel’s query builder. Read more
Source§

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

Source§

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

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

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

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

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

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

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

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

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

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + 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
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

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

Immutable access to a value. Read more
Source§

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

Mutable access to a value. Read more
Source§

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> TryConv for T

Source§

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

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

Source§

fn vzip(self) -> V

Source§

impl<T> WindowExpressionMethods for T

Source§

fn over(self) -> Self::Output
where Self: OverDsl,

Turn a function call into a window function call Read more
Source§

fn window_filter<P>(self, f: P) -> Self::Output
where P: AsExpression<Bool>, Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,

Add a filter to the current window function Read more
Source§

fn partition_by<E>(self, expr: E) -> Self::Output
where Self: PartitionByDsl<E>,

Add a partition clause to the current window function Read more
Source§

fn window_order<E>(self, expr: E) -> Self::Output
where Self: OrderWindowDsl<E>,

Add a order clause to the current window function Read more
Source§

fn frame_by<E>(self, expr: E) -> Self::Output
where Self: FrameDsl<E>,

Add a frame clause to the current window function 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