pub async fn run_adapter<D, I, O, E>(
input: I,
output: O,
adapter_factory: impl FnOnce(UnboundedSender<Either<ProtocolMessage, <D as DebugAdapter>::Message>>) -> D,
) -> Result<(), DebugAdapterError<E, <O as Sink<ProtocolMessage>>::Error, <D as DebugAdapter>::CustomError>>where
D: DebugAdapter + Send + 'static,
I: Stream<Item = Result<ProtocolMessage, E>> + Unpin + Send + 'static,
O: Sink<ProtocolMessage> + Unpin + Send + 'static,
E: Send + 'static,
<O as Sink<ProtocolMessage>>::Error: Send + 'static,
<D as DebugAdapter>::CustomError: Send + 'static,