Skip to main content

polyoxide_binance/
lib.rs

1//! # polyoxide-binance
2//!
3//! Rust client library for Binance's APIs, one feature per module: `usdm`.
4//!
5//! `usdm` (feature `usdm`, on by default) reads USDⓈ-M futures public market
6//! data (`fapi.binance.com`), and with `usdm-ws` its market streams
7//! (`fstream.binance.com`). No credentials are needed. The module's own docs
8//! carry its example.
9
10// Compile the crate README's `rust` code fences as doctests so broken examples
11// fail CI. `doctest` keeps this out of normal builds and `cargo doc`.
12#[cfg(all(doctest, feature = "usdm"))]
13#[doc = include_str!("../README.md")]
14struct ReadmeDoctests;
15
16// Each module's README is a doctest under its own feature, as the crate's is.
17// `.github/scripts/tests/test_module_readmes.py` fails when a module README
18// has no include here, or an include names no README.
19#[cfg(all(doctest, feature = "usdm"))]
20#[doc = include_str!("usdm/README.md")]
21struct UsdmReadmeDoctests;
22
23#[cfg(feature = "usdm")]
24pub mod usdm;
25
26// Every public error type implements `Classify`; one without it fails the
27// build here. `.github/scripts/tests/test_classify_coverage.py` fails when a
28// public error type is missing from this list.
29#[cfg(feature = "usdm")]
30const _: fn() = || {
31    fn is<T: polyoxide_venue::Classify>() {}
32    is::<usdm::UsdmError>();
33    is::<usdm::types::InvalidSymbol>();
34    #[cfg(feature = "usdm-ws")]
35    is::<usdm::ws::UsdmWsError>();
36    #[cfg(feature = "usdm-ws")]
37    is::<usdm::ws::InvalidStreamName>();
38};
39
40// Every product implements its class's bundle; one that drops a defining
41// capability fails the build here.
42#[cfg(feature = "usdm")]
43const _: fn() = || {
44    fn bundle<T: polyoxide_venue::PerpetualMarket>() {}
45    bundle::<usdm::Usdm>();
46};