apple-quant-algorithmic 0.3.0

Apple Quant's algorithmic library.
mod cancel;
mod submit;

use std::ops::{Deref, DerefMut};

use crate::{instrument::InstrumentSpec, price::BidAskPriceSpread};

use super::{
	client::{CancelClientOrder, SubmitClientOrder},
	OrderAction,
};

pub use cancel::*;
pub use submit::*;

#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RemoteOrderAction<IS: InstrumentSpec>(OrderAction<IS>);

impl<IS: InstrumentSpec> RemoteOrderAction<IS> {
	pub fn new(
		order_action: OrderAction<IS>,
	) -> Self {
		Self(order_action)
	}

	pub fn into_order_action(
		self,
	) -> OrderAction<IS> {
		self.0
	}

	pub fn as_order_action(
		&self,
	) -> &OrderAction<IS> {
		&self.0
	}
}

impl<IS: InstrumentSpec> Deref for RemoteOrderAction<IS> {
	type Target = OrderAction<IS>;

	fn deref(
		&self,
	) -> &Self::Target {
		&self.0
	}
}

impl<IS: InstrumentSpec> DerefMut for RemoteOrderAction<IS> {
	fn deref_mut(
		&mut self,
	) -> &mut Self::Target {
		&mut self.0
	}
}