//! Runtime components //! //! The traits and types within this module are used to allow plugging in //! runtime types. These include: //! //! - Executors //! - Timers //! - IO transports pub mod bounds; mod io; mod timer; pub use self::io::{Read, ReadBuf, ReadBufCursor, Write}; pub use self::timer::{Sleep, Timer}; /// An executor of futures. /// /// This trait allows Hyper to abstract over async runtimes. Implement this trait for your own type. /// /// # Example /// /// ``` /// # use hyper::rt::Executor; /// # use std::future::Future; /// #[derive(Clone)] /// struct TokioExecutor; /// /// impl Executor for TokioExecutor /// where /// F: Future + Send + 'static, /// F::Output: Send + 'static, /// { /// fn execute(&self, future: F) { /// tokio::spawn(future); /// } /// } /// ``` pub trait Executor { /// Place the future into the executor to be run. fn execute(&self, fut: Fut); }