//! The room abstraction: turns a client-to-server stream into a server-to-client stream.
//!
//! A [`RoomProvider`] is a duel that accepts a client-to-server message stream and returns
//! the matching server-to-client message stream, plus a future that signals when the room
//! finishes.
use Future;
use Stream;
/// Abstract of a duel.
///
/// Implementing this trait means it can accept a stream of `ClientToServerMessage` and
/// return a stream of `ServerToClientMessage`.
///
/// Usually `ClientToServerMessage` is a derived type of [`ctos::Message`](ygopro_data::message::ctos::Message), and
/// `ServerToClientMessage` is a derived type of [`stoc::Message`](ygopro_data::message::stoc::Message).