use crate::Fields;
#[derive(Clone, Debug)]
pub enum BodyFrame<D> {
Data { data: D, end: bool },
Headers { fields: Fields, end: bool },
End,
}
impl<D> BodyFrame<D> {
pub const fn is_end(&self) -> bool {
match self {
Self::Data { end, .. } | Self::Headers { end, .. } => *end,
Self::End => true,
}
}
pub fn map_data<T>(self, map: impl FnOnce(D) -> T) -> BodyFrame<T> {
match self {
Self::Data { data, end } => BodyFrame::Data {
data: map(data),
end,
},
Self::Headers { fields, end } => BodyFrame::Headers { fields, end },
Self::End => BodyFrame::End,
}
}
}