connection-utils 0.8.0

Connection related utilities.
Documentation
use std::pin::Pin;

use tokio_util::codec::Framed;
use tokio::io::{AsyncRead, AsyncWrite};
use serde::{Serialize, de::DeserializeOwned};

use crate::{codecs::GenericCodec, types::TFramedAsyncDuplex};

/// Creates a new framed stream out of a channel.
pub fn create_framed_stream<
    T: Serialize + DeserializeOwned,
    TAsyncDuplex: AsyncRead + AsyncWrite + Send + Unpin + ?Sized + 'static,
>(
    stream: Box<TAsyncDuplex>,
) -> TFramedAsyncDuplex<T, TAsyncDuplex> {
    return Framed::new(
        Pin::new(stream),
        GenericCodec::<T>::new(),
    );
}