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}