tokio::io::split()
/// Split a single value implementing `AsyncRead + AsyncWrite` into separate/// `AsyncRead` and `AsyncWrite` handles.////// To restore this read/write object from its `split::ReadHalf` and/// `split::WriteHalf` use `unsplit`.pub fn split<T>(stream: T) -> (ReadHalf<T>, WriteHalf<T>)where T: AsyncRead + AsyncWrite {let inner = Arc::new(Inner {locked: AtomicBool::new(false),stream: UnsafeCell::new(stream),});let rd = ReadHalf { inner: inner.clone() };let wr = WriteHalf { inner };(rd, wr)}
