Skip to main content

aws_multipart_upload/encoder/
framed_encoder.rs

1use tokio_util::codec::Encoder;
2
3use super::{EncodeError, PartEncoder};
4use crate::request::{PartBody, PartNumber};
5
6/// `FramedEncoder` implements `PartEncoder` for [`FramedWrite`] types.
7///
8/// [`FramedWrite`]: tokio_util::codec::FramedWrite
9#[derive(Debug, Clone, Copy, Default)]
10pub struct FramedEncoder<E> {
11    encoder: E,
12}
13
14impl<E> FramedEncoder<E> {
15    /// Create a new `FramedEncoder`.
16    pub fn new(encoder: E) -> FramedEncoder<E> {
17        Self { encoder }
18    }
19}
20
21impl<E, Item> PartEncoder<Item> for FramedEncoder<E>
22where
23    E: Encoder<Item>,
24    E::Error: EncodeError,
25{
26    type Error = E::Error;
27
28    fn encode(
29        &mut self,
30        part: &mut PartBody,
31        _part_number: PartNumber,
32        item: Item,
33    ) -> Result<(), Self::Error> {
34        self.encoder.encode(item, part)
35    }
36}