1#![deny(missing_docs)]
2
3pub mod instruments;
7
8pub mod tickers;
10
11pub mod candles;
13
14pub mod place;
16
17pub mod cancel;
19
20pub mod check;
22
23pub mod orders;
25
26pub use self::{
27 cancel::{MakeCancelOrder, MakeCancelOrderOptions},
28 candles::{MakeFetchCandles, MakeFetchCandlesOptions},
29 check::{MakeCheckOrder, MakeCheckOrderOptions},
30 instruments::{MakeInstruments, MakeInstrumentsOptions},
31 orders::{MakeSubscribeOrders, MakeSubscribeOrdersOptions},
32 place::{MakePlaceOrder, MakePlaceOrderOptions},
33 tickers::{MakeTickers, MakeTickersOptions},
34};
35
36#[macro_export(local_inner_macros)]
38macro_rules! create_as_service {
39 ($make_trait:ident, $options_type:ident, $method:ident, $doc:expr) => {
40 #[doc = $doc]
41 #[derive(Debug)]
42 pub struct AsService<'a, M>
43 where
44 M: $make_trait,
45 {
46 make: &'a mut M,
47 }
48
49 impl<M> tower_service::Service<$options_type> for AsService<'_, M>
50 where
51 M: $make_trait,
52 {
53 type Response = M::Service;
54 type Error = ExchangeError;
55 type Future = M::Future;
56
57 #[inline]
58 fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
59 self.make.poll_ready(cx)
60 }
61
62 #[inline]
63 fn call(&mut self, options: $options_type) -> Self::Future {
64 self.make.$method(options)
65 }
66 }
67 };
68}