# binance-rs-async Unofficial Rust Library for the [Binance API](https://github.com/binance-exchange/binance-official-api-docs) This is a fully async api using [tokio](https://tokio.rs/). ## Current state The current beta aims at implementing every single endpoint on the binance docs. Currently, futures and savings have been implemented but not thoroughly tested. ## Usage Add this to your Cargo.toml ```toml [dependencies] binance-rs-async = "1.3.2" ``` ## Roadmap - 1.0.0 Completely tested margin sapi endpoints - 1.0.* Changelog check to detect binance API changes - 1.1.* Wallet API - 1.2.* to 1.3.* Continuous updates for wallet and margin APIs - 1.4.* Complete tested futures (m-coin and usd-m futures) ## Breaking changes - 1.3.0 introduces optional fields for MarginOrderCancellationResult instead of definitely set fields ## Risk Warning It is a personal project, use at your own risk. I will not be responsible for your investment losses. Cryptocurrency investment is subject to high market risk. Nonetheless, this crate is aimed at high performance and production use, I have been using this to target Binance successfully for several years now. ### Using TLS By default, the crate uses `native-tls` for tungstenite and reqwest because I believe it's simpler and faster to let the user switch LibreSSL or OpenSSL versions rather than rebuild the program. You can however disable default-features and use `rust-tls`, which might be helpful in certain situations such as CI or dev box. ## Rust >= 1.37 ```shell rustup install stable ``` ## Cargo dependencies ```shell cargo install cargo-semver-checks ``` ## Checking documentation and release ```shell cargo semver-checks check-release --package binance-rs-async --verbose ``` ## Contribution Simply create a pull request. Properly documented code and tests (using binance testnet) are a must. ## Running github actions locally : ```shell # Example that runs the make-release-pr workflow act -P ubuntu-latest=cimg/rust:1.66.1-node workflow_dispatch -j make-release-pr --eventpath release.json --secret-file=secrets ```