pub struct ExchangeCapabilities { /* private fields */ }Expand description
Exchange capabilities configuration
This struct provides a high-level API for working with exchange capabilities, maintaining backward compatibility with the original boolean-field design while using efficient bitflags internally.
§Example
use ccxt_core::capability::ExchangeCapabilities;
let caps = ExchangeCapabilities::public_only();
assert!(caps.has("fetchTicker"));
assert!(!caps.has("createOrder"));
let caps = ExchangeCapabilities::all();
assert!(caps.fetch_ticker());
assert!(caps.create_order());Implementations§
Source§impl ExchangeCapabilities
impl ExchangeCapabilities
Sourcepub const fn none() -> ExchangeCapabilities
pub const fn none() -> ExchangeCapabilities
Create with no capabilities enabled
Sourcepub const fn all() -> ExchangeCapabilities
pub const fn all() -> ExchangeCapabilities
Create capabilities with all features enabled
§Example
use ccxt_core::capability::ExchangeCapabilities;
let caps = ExchangeCapabilities::all();
assert!(caps.fetch_ticker());
assert!(caps.create_order());
assert!(caps.websocket());Sourcepub const fn public_only() -> ExchangeCapabilities
pub const fn public_only() -> ExchangeCapabilities
Create capabilities for public API only (no authentication required)
§Example
use ccxt_core::capability::ExchangeCapabilities;
let caps = ExchangeCapabilities::public_only();
assert!(caps.fetch_ticker());
assert!(!caps.create_order());Sourcepub const fn from_capabilities(caps: Capabilities) -> ExchangeCapabilities
pub const fn from_capabilities(caps: Capabilities) -> ExchangeCapabilities
Create from raw Capabilities bitflags
Sourcepub const fn as_capabilities(&self) -> Capabilities
pub const fn as_capabilities(&self) -> Capabilities
Get the underlying Capabilities bitflags
Sourcepub fn has(&self, capability: &str) -> bool
pub fn has(&self, capability: &str) -> bool
Check if a capability is supported by name
This method allows checking capabilities using CCXT-style camelCase names.
§Arguments
capability- The capability name in camelCase format
§Example
use ccxt_core::capability::ExchangeCapabilities;
let caps = ExchangeCapabilities::all();
assert!(caps.has("fetchTicker"));
assert!(caps.has("createOrder"));
assert!(!caps.has("unknownCapability"));Sourcepub fn supported_capabilities(&self) -> Vec<&'static str>
pub fn supported_capabilities(&self) -> Vec<&'static str>
Get a list of all supported capability names
Sourcepub const fn fetch_markets(&self) -> bool
pub const fn fetch_markets(&self) -> bool
Can fetch market definitions
Sourcepub const fn fetch_currencies(&self) -> bool
pub const fn fetch_currencies(&self) -> bool
Can fetch currency definitions
Sourcepub const fn fetch_ticker(&self) -> bool
pub const fn fetch_ticker(&self) -> bool
Can fetch single ticker
Sourcepub const fn fetch_tickers(&self) -> bool
pub const fn fetch_tickers(&self) -> bool
Can fetch multiple tickers
Sourcepub const fn fetch_order_book(&self) -> bool
pub const fn fetch_order_book(&self) -> bool
Can fetch order book
Sourcepub const fn fetch_trades(&self) -> bool
pub const fn fetch_trades(&self) -> bool
Can fetch public trades
Sourcepub const fn fetch_ohlcv(&self) -> bool
pub const fn fetch_ohlcv(&self) -> bool
Can fetch OHLCV candlestick data
Sourcepub const fn fetch_status(&self) -> bool
pub const fn fetch_status(&self) -> bool
Can fetch exchange status
Sourcepub const fn fetch_time(&self) -> bool
pub const fn fetch_time(&self) -> bool
Can fetch server time
Sourcepub const fn create_order(&self) -> bool
pub const fn create_order(&self) -> bool
Can create orders
Sourcepub const fn create_market_order(&self) -> bool
pub const fn create_market_order(&self) -> bool
Can create market orders
Sourcepub const fn create_limit_order(&self) -> bool
pub const fn create_limit_order(&self) -> bool
Can create limit orders
Sourcepub const fn cancel_order(&self) -> bool
pub const fn cancel_order(&self) -> bool
Can cancel orders
Sourcepub const fn cancel_all_orders(&self) -> bool
pub const fn cancel_all_orders(&self) -> bool
Can cancel all orders
Sourcepub const fn edit_order(&self) -> bool
pub const fn edit_order(&self) -> bool
Can edit/modify orders
Sourcepub const fn fetch_order(&self) -> bool
pub const fn fetch_order(&self) -> bool
Can fetch single order
Sourcepub const fn fetch_orders(&self) -> bool
pub const fn fetch_orders(&self) -> bool
Can fetch all orders
Sourcepub const fn fetch_open_orders(&self) -> bool
pub const fn fetch_open_orders(&self) -> bool
Can fetch open orders
Sourcepub const fn fetch_closed_orders(&self) -> bool
pub const fn fetch_closed_orders(&self) -> bool
Can fetch closed orders
Sourcepub const fn fetch_canceled_orders(&self) -> bool
pub const fn fetch_canceled_orders(&self) -> bool
Can fetch canceled orders
Sourcepub const fn fetch_balance(&self) -> bool
pub const fn fetch_balance(&self) -> bool
Can fetch account balance
Sourcepub const fn fetch_my_trades(&self) -> bool
pub const fn fetch_my_trades(&self) -> bool
Can fetch user’s trade history
Sourcepub const fn fetch_deposits(&self) -> bool
pub const fn fetch_deposits(&self) -> bool
Can fetch deposit history
Sourcepub const fn fetch_withdrawals(&self) -> bool
pub const fn fetch_withdrawals(&self) -> bool
Can fetch withdrawal history
Sourcepub const fn fetch_transactions(&self) -> bool
pub const fn fetch_transactions(&self) -> bool
Can fetch transaction history
Sourcepub const fn fetch_ledger(&self) -> bool
pub const fn fetch_ledger(&self) -> bool
Can fetch ledger entries
Sourcepub const fn fetch_deposit_address(&self) -> bool
pub const fn fetch_deposit_address(&self) -> bool
Can fetch deposit address
Sourcepub const fn create_deposit_address(&self) -> bool
pub const fn create_deposit_address(&self) -> bool
Can create deposit address
Sourcepub const fn fetch_borrow_rate(&self) -> bool
pub const fn fetch_borrow_rate(&self) -> bool
Can fetch borrow rate
Sourcepub const fn fetch_borrow_rates(&self) -> bool
pub const fn fetch_borrow_rates(&self) -> bool
Can fetch multiple borrow rates
Sourcepub const fn fetch_funding_rate(&self) -> bool
pub const fn fetch_funding_rate(&self) -> bool
Can fetch funding rate
Sourcepub const fn fetch_funding_rates(&self) -> bool
pub const fn fetch_funding_rates(&self) -> bool
Can fetch multiple funding rates
Sourcepub const fn fetch_positions(&self) -> bool
pub const fn fetch_positions(&self) -> bool
Can fetch positions
Sourcepub const fn set_leverage(&self) -> bool
pub const fn set_leverage(&self) -> bool
Can set leverage
Sourcepub const fn set_margin_mode(&self) -> bool
pub const fn set_margin_mode(&self) -> bool
Can set margin mode
Sourcepub const fn watch_ticker(&self) -> bool
pub const fn watch_ticker(&self) -> bool
Can watch ticker updates
Sourcepub const fn watch_tickers(&self) -> bool
pub const fn watch_tickers(&self) -> bool
Can watch multiple ticker updates
Sourcepub const fn watch_order_book(&self) -> bool
pub const fn watch_order_book(&self) -> bool
Can watch order book updates
Sourcepub const fn watch_trades(&self) -> bool
pub const fn watch_trades(&self) -> bool
Can watch trade updates
Sourcepub const fn watch_ohlcv(&self) -> bool
pub const fn watch_ohlcv(&self) -> bool
Can watch OHLCV updates
Sourcepub const fn watch_balance(&self) -> bool
pub const fn watch_balance(&self) -> bool
Can watch balance updates
Sourcepub const fn watch_orders(&self) -> bool
pub const fn watch_orders(&self) -> bool
Can watch order updates
Sourcepub const fn watch_my_trades(&self) -> bool
pub const fn watch_my_trades(&self) -> bool
Can watch user trade updates
Sourcepub fn builder() -> ExchangeCapabilitiesBuilder
pub fn builder() -> ExchangeCapabilitiesBuilder
Create a builder for ExchangeCapabilities
§Example
use ccxt_core::capability::ExchangeCapabilities;
let caps = ExchangeCapabilities::builder()
.market_data()
.trading()
.websocket()
.build();
assert!(caps.fetch_ticker());
assert!(caps.create_order());
assert!(caps.websocket());Source§impl ExchangeCapabilities
impl ExchangeCapabilities
Sourcepub const fn spot_exchange() -> ExchangeCapabilities
pub const fn spot_exchange() -> ExchangeCapabilities
Create capabilities for a typical spot exchange
Includes: market data, trading, account, and basic WebSocket
Sourcepub const fn futures_exchange() -> ExchangeCapabilities
pub const fn futures_exchange() -> ExchangeCapabilities
Create capabilities for a typical futures exchange
Includes: spot capabilities + margin trading
Sourcepub const fn full_featured() -> ExchangeCapabilities
pub const fn full_featured() -> ExchangeCapabilities
Create capabilities for a full-featured exchange (like Binance)
Includes: all capabilities
Source§impl ExchangeCapabilities
impl ExchangeCapabilities
Sourcepub const fn supports_market_data(&self) -> bool
pub const fn supports_market_data(&self) -> bool
Check if the exchange supports the MarketData trait.
Returns true if the exchange has the minimum capabilities required
to implement the MarketData trait (fetch_markets and fetch_ticker).
§Example
use ccxt_core::capability::ExchangeCapabilities;
let caps = ExchangeCapabilities::public_only();
assert!(caps.supports_market_data());
let caps = ExchangeCapabilities::none();
assert!(!caps.supports_market_data());Sourcepub const fn supports_trading(&self) -> bool
pub const fn supports_trading(&self) -> bool
Check if the exchange supports the Trading trait.
Returns true if the exchange has the minimum capabilities required
to implement the Trading trait (create_order and cancel_order).
§Example
use ccxt_core::capability::ExchangeCapabilities;
let caps = ExchangeCapabilities::all();
assert!(caps.supports_trading());
let caps = ExchangeCapabilities::public_only();
assert!(!caps.supports_trading());Sourcepub const fn supports_account(&self) -> bool
pub const fn supports_account(&self) -> bool
Check if the exchange supports the Account trait.
Returns true if the exchange has the minimum capabilities required
to implement the Account trait (fetch_balance).
§Example
use ccxt_core::capability::ExchangeCapabilities;
let caps = ExchangeCapabilities::all();
assert!(caps.supports_account());
let caps = ExchangeCapabilities::public_only();
assert!(!caps.supports_account());Sourcepub const fn supports_margin(&self) -> bool
pub const fn supports_margin(&self) -> bool
Check if the exchange supports the Margin trait.
Returns true if the exchange has the minimum capabilities required
to implement the Margin trait (fetch_positions).
§Example
use ccxt_core::capability::ExchangeCapabilities;
let caps = ExchangeCapabilities::futures_exchange();
assert!(caps.supports_margin());
let caps = ExchangeCapabilities::spot_exchange();
assert!(!caps.supports_margin());Sourcepub const fn supports_funding(&self) -> bool
pub const fn supports_funding(&self) -> bool
Check if the exchange supports the Funding trait.
Returns true if the exchange has the minimum capabilities required
to implement the Funding trait (fetch_deposit_address).
§Example
use ccxt_core::capability::ExchangeCapabilities;
let caps = ExchangeCapabilities::all();
assert!(caps.supports_funding());
let caps = ExchangeCapabilities::public_only();
assert!(!caps.supports_funding());Sourcepub const fn supports_websocket(&self) -> bool
pub const fn supports_websocket(&self) -> bool
Check if the exchange supports WebSocket.
Returns true if the exchange has the base WebSocket capability.
§Example
use ccxt_core::capability::ExchangeCapabilities;
let caps = ExchangeCapabilities::all();
assert!(caps.supports_websocket());
let caps = ExchangeCapabilities::public_only();
assert!(!caps.supports_websocket());Sourcepub const fn supports_full_exchange(&self) -> bool
pub const fn supports_full_exchange(&self) -> bool
Check if the exchange supports all traits (FullExchange).
Returns true if the exchange has the minimum capabilities required
to implement all traits: MarketData, Trading, Account, Margin, and Funding.
§Example
use ccxt_core::capability::ExchangeCapabilities;
let caps = ExchangeCapabilities::all();
assert!(caps.supports_full_exchange());
let caps = ExchangeCapabilities::spot_exchange();
assert!(!caps.supports_full_exchange());Sourcepub const fn supports_trait(&self, category: TraitCategory) -> bool
pub const fn supports_trait(&self, category: TraitCategory) -> bool
Check if the exchange supports a specific trait category.
§Arguments
category- The trait category to check
§Example
use ccxt_core::capability::{ExchangeCapabilities, TraitCategory};
let caps = ExchangeCapabilities::all();
assert!(caps.supports_trait(TraitCategory::MarketData));
assert!(caps.supports_trait(TraitCategory::Trading));Sourcepub fn supported_traits(&self) -> Vec<TraitCategory>
pub fn supported_traits(&self) -> Vec<TraitCategory>
Get a list of supported trait categories.
Returns a vector of trait categories that this exchange supports based on its capabilities.
§Example
use ccxt_core::capability::{ExchangeCapabilities, TraitCategory};
let caps = ExchangeCapabilities::public_only();
let traits = caps.supported_traits();
assert!(traits.contains(&TraitCategory::PublicExchange));
assert!(traits.contains(&TraitCategory::MarketData));
assert!(!traits.contains(&TraitCategory::Trading));Sourcepub const fn capabilities_for_trait(
&self,
category: TraitCategory,
) -> Capabilities
pub const fn capabilities_for_trait( &self, category: TraitCategory, ) -> Capabilities
Get capabilities for a specific trait category.
Returns the capabilities that are enabled for the specified trait category.
§Arguments
category- The trait category to get capabilities for
§Example
use ccxt_core::capability::{ExchangeCapabilities, TraitCategory, Capabilities};
let caps = ExchangeCapabilities::all();
let market_caps = caps.capabilities_for_trait(TraitCategory::MarketData);
assert!(market_caps.contains(Capabilities::FETCH_TICKER));Sourcepub const fn trait_for_capability(capability: Capability) -> TraitCategory
pub const fn trait_for_capability(capability: Capability) -> TraitCategory
Get the trait category for a specific capability.
§Arguments
capability- The capability to get the trait category for
§Example
use ccxt_core::capability::{ExchangeCapabilities, Capability, TraitCategory};
let category = ExchangeCapabilities::trait_for_capability(Capability::FetchTicker);
assert_eq!(category, TraitCategory::MarketData);Trait Implementations§
Source§impl Clone for ExchangeCapabilities
impl Clone for ExchangeCapabilities
Source§fn clone(&self) -> ExchangeCapabilities
fn clone(&self) -> ExchangeCapabilities
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ExchangeCapabilities
impl Debug for ExchangeCapabilities
Source§impl Default for ExchangeCapabilities
impl Default for ExchangeCapabilities
Source§fn default() -> ExchangeCapabilities
fn default() -> ExchangeCapabilities
Source§impl Display for ExchangeCapabilities
impl Display for ExchangeCapabilities
Source§impl From<Capabilities> for ExchangeCapabilities
impl From<Capabilities> for ExchangeCapabilities
Source§fn from(caps: Capabilities) -> ExchangeCapabilities
fn from(caps: Capabilities) -> ExchangeCapabilities
Source§impl Hash for ExchangeCapabilities
impl Hash for ExchangeCapabilities
Source§impl PartialEq for ExchangeCapabilities
impl PartialEq for ExchangeCapabilities
impl Copy for ExchangeCapabilities
impl Eq for ExchangeCapabilities
impl StructuralPartialEq for ExchangeCapabilities
Auto Trait Implementations§
impl Freeze for ExchangeCapabilities
impl RefUnwindSafe for ExchangeCapabilities
impl Send for ExchangeCapabilities
impl Sync for ExchangeCapabilities
impl Unpin for ExchangeCapabilities
impl UnwindSafe for ExchangeCapabilities
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.