diff --git a/tokio-io/src/split.rs b/tokio-io/src/split.rs index d13f9882b..0fd0ebbcf 100644 --- a/tokio-io/src/split.rs +++ b/tokio-io/src/split.rs @@ -160,6 +160,11 @@ impl Drop for Guard<'_, T> { } } +unsafe impl Send for ReadHalf {} +unsafe impl Send for WriteHalf {} +unsafe impl Sync for ReadHalf {} +unsafe impl Sync for WriteHalf {} + impl fmt::Debug for ReadHalf { fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { fmt.debug_struct("split::ReadHalf").finish() diff --git a/tokio-io/tests/split.rs b/tokio-io/tests/split.rs index f9c0c07f3..7be96241c 100644 --- a/tokio-io/tests/split.rs +++ b/tokio-io/tests/split.rs @@ -1,4 +1,5 @@ use tokio::io::{split, AsyncRead, AsyncWrite}; +use tokio_io::split::{ReadHalf, WriteHalf}; use std::io; use std::pin::Pin; @@ -34,6 +35,14 @@ impl AsyncWrite for RW { } } +#[test] +fn is_send_and_sync() { + fn assert_bound() {} + + assert_bound::>(); + assert_bound::>(); +} + #[test] fn unsplit_ok() { let (r, w) = split(RW);