intrepid_core/extract/
message.rs

1use crate::{Context, Frame, MessageFrame};
2
3use super::{Extractor, MessageFrameError, WrongFrameError};
4
5#[derive(Clone, Debug)]
6/// Retrieve a [`MessageFrame`] from a [`Frame`], but only if the frame is a message.
7pub struct Message(pub MessageFrame);
8
9impl<State> Extractor<State> for Message {
10    type Error = MessageFrameError;
11
12    fn extract(frame: Frame, _: &Context<State>) -> Result<Self, Self::Error> {
13        match frame {
14            Frame::Message(message) => Ok(Self(message)),
15            _ => Err(WrongFrameError.into()),
16        }
17    }
18}