1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use bytes::BytesMut;

use crate::Encoder;

/// An extension trait for [`Encoder`](crate::Encoder).
pub trait EncoderExt: Encoder + Sized {
    /// Encodes `self` into `buf`.
    ///
    /// This is just an alias to [`Encoder::encode`], with `self` passed in
    /// the place of `item`.
    #[inline(always)]
    fn encode_to(&self, buf: &mut BytesMut) -> Result<(), Self::Error> {
        <Self as Encoder>::encode(self, buf)
    }

    /// Returns the number of bytes required to encode `self`.
    fn size(&self) -> usize {
        <Self as Encoder>::size_of(self)
    }
}

impl<T> EncoderExt for T where T: Encoder + Sized {}