use super::{ReceiveStream, SendStream};
pub trait SplittableStream {
fn split(self) -> (Option<ReceiveStream>, Option<SendStream>);
}
macro_rules! impl_splittable_stream_api {
() => {
#[inline]
pub fn split(
self,
) -> (
Option<$crate::stream::ReceiveStream>,
Option<$crate::stream::SendStream>,
) {
$crate::stream::SplittableStream::split(self)
}
};
}
macro_rules! impl_splittable_stream_trait {
($name:ident, | $self:ident | $convert:expr) => {
impl $crate::stream::SplittableStream for $name {
#[inline]
fn split(
self,
) -> (
Option<$crate::stream::ReceiveStream>,
Option<$crate::stream::SendStream>,
) {
let $self = self;
$convert
}
}
};
}