diff --git a/src/rt.rs b/src/rt.rs index f1de1644..3334bb12 100644 --- a/src/rt.rs +++ b/src/rt.rs @@ -8,4 +8,48 @@ pub use futures::{Future, Stream}; pub use futures::future::{lazy, poll_fn}; -pub use tokio::{run, spawn}; +use tokio; + +use self::inner::Spawn; + +/// Spawns a future on the default executor. +/// +/// # Panics +/// +/// This function will panic if the default executor is not set. +/// +/// # Note +/// +/// The `Spawn` return type is not currently meant for anything other than +/// to reserve adding new trait implementations to it later. It can be +/// ignored for now. +pub fn spawn(f: F) -> Spawn +where + F: Future + Send + 'static, +{ + tokio::spawn(f); + Spawn { + _inner: (), + } +} + +/// Start the Tokio runtime using the supplied future to bootstrap execution. +/// +/// # Example +/// +/// See the [server documentation](::server) for an example of its usage. +pub fn run(f: F) +where + F: Future + Send + 'static +{ + tokio::run(f); +} + +// Make the `Spawn` type an unnameable, so we can add +// methods or trait impls to it later without a breaking change. +mod inner { + #[allow(missing_debug_implementations)] + pub struct Spawn { + pub(super) _inner: (), + } +}