use std::io::Cursor;
use bytes::Bytes;
use bytes::BytesMut;
use super::bufext::BufExt;
use super::bufext::BufMutExt;
pub type FramingEncoded<F> = <F as Framing>::EncBuf;
pub type FramingEncodedFinal<F> = <<F as Framing>::EncBuf as BufMutExt>::Final;
pub type FramingDecoded<F> = <F as Framing>::DecBuf;
pub trait Framing {
type EncBuf: BufMutExt + Send + 'static;
type DecBuf: BufExt + Send + 'static;
fn enc_with_capacity(cap: usize) -> Self::EncBuf;
}
impl Framing for Bytes {
type EncBuf = BytesMut;
type DecBuf = Cursor<Bytes>;
fn enc_with_capacity(cap: usize) -> Self::EncBuf {
BytesMut::with_capacity(cap)
}
}