1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
use std::fmt; use std::ops::{Deref, DerefMut}; use actix_codec::{Decoder, Encoder}; use crate::sink::Sink; pub struct Item<St, Codec: Encoder + Decoder> { state: St, sink: Sink<<Codec as Encoder>::Item>, item: <Codec as Decoder>::Item, } impl<St, Codec> Item<St, Codec> where Codec: Encoder + Decoder, { pub(crate) fn new( state: St, sink: Sink<<Codec as Encoder>::Item>, item: <Codec as Decoder>::Item, ) -> Self { Item { state, sink, item } } #[inline] pub fn state(&self) -> &St { &self.state } #[inline] pub fn state_mut(&mut self) -> &mut St { &mut self.state } #[inline] pub fn sink(&self) -> &Sink<<Codec as Encoder>::Item> { &self.sink } #[inline] pub fn into_inner(self) -> <Codec as Decoder>::Item { self.item } #[inline] pub fn into_parts(self) -> (St, Sink<<Codec as Encoder>::Item>, <Codec as Decoder>::Item) { (self.state, self.sink, self.item) } } impl<St, Codec> Deref for Item<St, Codec> where Codec: Encoder + Decoder, { type Target = <Codec as Decoder>::Item; #[inline] fn deref(&self) -> &<Codec as Decoder>::Item { &self.item } } impl<St, Codec> DerefMut for Item<St, Codec> where Codec: Encoder + Decoder, { #[inline] fn deref_mut(&mut self) -> &mut <Codec as Decoder>::Item { &mut self.item } } impl<St, Codec> fmt::Debug for Item<St, Codec> where Codec: Encoder + Decoder, <Codec as Decoder>::Item: fmt::Debug, { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_tuple("FramedItem").field(&self.item).finish() } }