use async_std::prelude::FutureExt;
pub use async_std::{
io::{ReadExt as AsyncReadExt, WriteExt as AsyncWriteExt},
main as async_main,
net::TcpStream,
task::{
block_on as async_block_on, block_on as async_block_on_with_runtime, sleep as async_sleep,
spawn as async_spawn, spawn_local as async_spawn_local, yield_now as async_yield_now,
},
test as async_test,
};
use std::future::Future;
use std::time::Duration;
pub mod stream {
pub mod to {
pub use async_std::stream::Timeout;
}
}
pub mod future {
pub mod to {
pub use async_std::future::TimeoutError;
pub type Result<T> = std::result::Result<T, async_std::future::TimeoutError>;
}
}
pub fn async_timeout<T>(
duration: Duration,
future: T,
) -> impl Future<Output = Result<T::Output, async_std::future::TimeoutError>>
where
T: Future,
{
future.timeout(duration)
}
#[must_use]
pub fn split_stream(stream: TcpStream) -> (TcpStream, TcpStream) {
(stream.clone(), stream)
}