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}