#![warn(missing_docs)]
#![warn(rust_2018_idioms)]
#![cfg_attr(feature = "nightly", feature(test))]
mod client;
mod ssl;
mod sync;
pub use crate::client::ClientBuilder;
pub use websocket_codec::{Error, Message, MessageCodec, Opcode, Result};
use std::io::{Read, Write};
use tokio::io::{AsyncRead, AsyncWrite};
use tokio_util::codec::Framed;
pub trait AsyncNetworkStream: AsyncRead + AsyncWrite {}
impl<S> AsyncNetworkStream for S where S: AsyncRead + AsyncWrite {}
pub trait NetworkStream: Read + Write {}
impl<S> NetworkStream for S where S: Read + Write {}
pub type AsyncClient<S> = Framed<S, MessageCodec>;
pub type Client<S> = sync::Framed<S, MessageCodec>;