Skip to main content

ccxt_core/capability/
macros.rs

1//! Capability-related macros
2
3/// Macro for building Capabilities with a concise syntax
4///
5/// # Examples
6///
7/// ```rust
8/// use ccxt_core::{capabilities, capability::Capabilities};
9///
10/// // Using predefined sets
11/// let caps = capabilities!(MARKET_DATA, TRADING);
12///
13/// // Using individual capabilities
14/// let caps = capabilities!(FETCH_TICKER, CREATE_ORDER, WEBSOCKET);
15///
16/// // Combining sets and individual capabilities
17/// let caps = capabilities!(MARKET_DATA | FETCH_BALANCE | WEBSOCKET);
18/// ```
19#[macro_export]
20macro_rules! capabilities {
21    // Single capability or set
22    ($cap:ident) => {
23        $crate::capability::Capabilities::$cap
24    };
25    // Multiple capabilities with |
26    ($cap:ident | $($rest:tt)+) => {
27        $crate::capability::Capabilities::$cap | capabilities!($($rest)+)
28    };
29    // Multiple capabilities with ,
30    ($cap:ident, $($rest:tt)+) => {
31        $crate::capability::Capabilities::$cap | capabilities!($($rest)+)
32    };
33}