use crate::RuntimeError;
use tokio::io::{AsyncRead, AsyncWrite};
pub async fn forward<A, B>(mut a: A, mut b: B) -> Result<(u64, u64), RuntimeError>
where
A: AsyncRead + AsyncWrite + Unpin,
B: AsyncRead + AsyncWrite + Unpin,
{
let counts = tokio::io::copy_bidirectional(&mut a, &mut b).await?;
Ok(counts)
}