Skip to main content

Order

Struct Order 

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

Active order in the perpetual contract order book.

Exchange order book has a limited capacity of 2^16-1 orders, which requires an extensive reuse of order IDs, up to the point that within the order of execution of a single order request, the same order ID can be used for more than one order. For example, if a taker order partially matches and then gets placed, the matched maker order with order ID = 1 gets removed from the book (and thus vacates the ID), then taker order gets placed under the same order ID = 1.

So the state of order book and particular mapping between orders and their IDs is tied to a particular point in time and should be used with care.

Exchange does not support concept of client order IDs and does not store any externally-provided state with orders on-chain, but each order request emits provided Order::request_id() with it, which gets indexed and stored with the order, with the original request ID preserved as Order::client_order_id() but with the limitation that this data is available only from events, not from the original snapshot.

See crate::abi::dex::Exchange::OrderDesc for more details on particular order parameters and exchange behavior. This wrapper provides automatic conversion from exchnage fixed numeric types to decimal numbers.

Implementations§

Source§

impl Order

Source

pub fn instant(&self) -> StateInstant

Instant the order state is consistent with or was last updated at.

Source

pub fn request_id(&self) -> Option<RequestId>

ID of the request this order was posted or updated by. Available only from real-time events, not from the initial snapshot.

Source

pub fn client_order_id(&self) -> Option<RequestId>

Client order ID = ID of the request this order was placed by. Available only from real-time events, not from the initial snapshot.

Source

pub fn order_id(&self) -> OrderId

ID of the order in the book.

Source

pub fn type(&self) -> OrderType

Type of the order.

Source

pub fn account_id(&self) -> AccountId

ID of the account issued the order.

Source

pub fn price(&self) -> UD64

Limit price of the order.

Source

pub fn size(&self) -> UD64

Current size of the order.

Source

pub fn placed_size(&self) -> Option<UD64>

Size of the order that was placed. Available only from real-time events, not from the initial snapshot.

Source

pub fn filled_size(&self) -> Option<UD64>

Filled size of the order. Available only from real-time events, not from the initial snapshot.

Source

pub fn expiry_block(&self) -> u64

Expiry block of the order, zero if was not specified.

Source

pub fn is_expired(&self) -> bool

Check if the order is expired. NOTE: Valid only after the end of expiry block processing.

Source

pub fn leverage(&self) -> UD64

Leverage of the order.

Source

pub fn post_only(&self) -> Option<bool>

Post-only flag. Available only from real-time events, not from the initial snapshot.

Source

pub fn fill_or_kill(&self) -> Option<bool>

Fill-or-fill flag. Available only from real-time events, not from the initial snapshot.

Source

pub fn immediate_or_cancel(&self) -> Option<bool>

Immediate-or-cancel flag. Available only from real-time events, not from the initial snapshot.

Source

pub fn builder(&self) -> Option<BuilderAttribution>

Builder the order is attributed to, along with the additive fee rate that builder charges on the size the order adds. None means no builder.

Unlike the flags above, attribution is persisted with the resting order on-chain, so it is available both from the initial snapshot (contract v1.1.7.4+, via getOrderV2) and from the OrderRequestV2 event stream. What a builder actually earned per fill is reported by the builder_fee of super::OrderEventType::Filled.

Source

pub fn prev_order_id(&self) -> Option<OrderId>

Previous order ID in the FIFO queue at this price level. Available from snapshot, None for newly placed orders or if this is the first order.

Source

pub fn next_order_id(&self) -> Option<OrderId>

Next order ID in the FIFO queue at this price level. Available from snapshot, None for newly placed orders or if this is the last order.

Trait Implementations§

Source§

impl Clone for Order

Source§

fn clone(&self) -> Order

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 Copy for Order

Source§

impl Debug for Order

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for Order

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Tabled for Order

Available on crate feature display only.
Source§

const LENGTH: usize = 13

A length of fields and headers, which must be the same.
Source§

fn fields(&self) -> Vec<Cow<'_, str>>

Fields method must return a list of cells. Read more
Source§

fn headers() -> Vec<Cow<'static, str>>

Headers must return a list of column names.

Auto Trait Implementations§

§

impl Freeze for Order

§

impl RefUnwindSafe for Order

§

impl Send for Order

§

impl Sync for Order

§

impl Unpin for Order

§

impl UnsafeUnpin for Order

§

impl UnwindSafe for Order

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<U> As for U

Source§

fn as_<T>(self) -> T
where T: CastFrom<U>, U: Sized,

Casts self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. 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
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> DynClone for T
where T: Clone,

Source§

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

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

Source§

type Output = T

Should always be Self
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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T> ToStringFallible for T
where T: Display,

Source§

fn try_to_string(&self) -> Result<String, TryReserveError>

ToString::to_string, but without panic on OOM.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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