use std::future::Future;
use crate::{Message, Result};
pub trait WebSocketTrait: Sized {
type Sender: WebSocketSenderTrait;
type Receiver: WebSocketReceiverTrait;
fn new(url: &str) -> impl Future<Output = Result<(Self::Sender, Self::Receiver)>>;
}
pub trait WebSocketSenderTrait {
fn send(&mut self, message: Message) -> impl Future<Output = Result<()>>;
fn close(&mut self, message: Option<(u16, String)>) -> impl Future<Output = Result<()>>;
}
pub trait WebSocketReceiverTrait {
fn next(&mut self) -> impl Future<Output = Result<Option<Message>>>;
}