v_exchanges 0.17.1

Implementations of HTTP/HTTPS/WebSocket API methods for some crypto exchanges, using [crypto-botters](<https://github.com/negi-grass/crypto-botters>) framework
Documentation
#![feature(array_try_map)]
#![feature(default_field_values)]
#![feature(formatting_options)]
#![feature(try_blocks)]
#![cfg_attr(docsrs, feature(doc_cfg))]

pub extern crate v_exchanges_adapters as adapters;

pub mod core;
// false positive: derive_new generates assignments that rustc thinks are dead, but fields are read by thiserror/Display
#[allow(unused_assignments)]
pub mod error;
pub mod prelude {
	pub use std::str::FromStr as _; // it's very annoying to have to manually bring it into the scope every single time. Putting this into preludes of all libraries with any exposed `FromStr` impls at this point.

	#[cfg(feature = "binance")]
	pub use crate::binance::Binance;
	// TODO: bitflyer implementation not yet complete
	// #[cfg(feature = "bitflyer")]
	// pub use crate::bitflyer::Bitflyer;
	#[cfg(feature = "data")]
	pub use crate::bitmex::Bitmex;
	#[cfg(feature = "bybit")]
	pub use crate::bybit::Bybit;
	// TODO: coincheck implementation not yet complete
	// #[cfg(feature = "coincheck")]
	// pub use crate::coincheck::Coincheck;
	#[cfg(feature = "kucoin")]
	pub use crate::kucoin::Kucoin;
	#[cfg(feature = "mexc")]
	pub use crate::mexc::Mexc;
	#[cfg(feature = "data")]
	pub use crate::yahoo::*;
	pub use crate::{core::*, error::*, orders::*, other_types::*};
}
#[cfg(feature = "binance")]
#[cfg_attr(docsrs, doc(cfg(feature = "binance")))]
pub mod binance;
#[cfg(feature = "bybit")]
#[cfg_attr(docsrs, doc(cfg(feature = "bybit")))]
pub mod bybit;
#[cfg(feature = "kucoin")]
#[cfg_attr(docsrs, doc(cfg(feature = "kucoin")))]
pub mod kucoin;
#[cfg(feature = "mexc")]
#[cfg_attr(docsrs, doc(cfg(feature = "mexc")))]
pub mod mexc;
pub mod orders;
pub(crate) mod other_types;

pub use prelude::*;

pub(crate) mod utils;

cfg_if::cfg_if! {
	if #[cfg(feature = "data")] {
		pub mod bitmex;
		pub mod yahoo;
	}
}