1
 2
 3
 4
 5
 6
 7
 8
 9
10
use crate::{ReadLayered, WriteLayered};
use duplex::{Duplex, HalfDuplex};

/// A trait which simply combines [`ReadLayered`], [`WriteLayered`], and
/// [`HalfDuplex`].
pub trait HalfDuplexLayered: HalfDuplex + ReadLayered + WriteLayered {}

impl<T: Duplex + ReadLayered + WriteLayered> HalfDuplexLayered for T {}

// TODO: `AsyncReadLayered` and `AsyncWriteLayered`?