Skip to main content

gribberish/
data_message.rs

1use crate::{error::GribberishError, message::Message, message_metadata::MessageMetadata};
2use std::convert::TryFrom;
3
4pub struct DataMessage {
5    pub metadata: MessageMetadata,
6    pub data: Vec<f64>,
7}
8
9impl<'a> TryFrom<&Message<'a>> for DataMessage {
10    type Error = GribberishError;
11
12    fn try_from(message: &Message) -> Result<Self, Self::Error> {
13        let metadata = MessageMetadata::try_from(message)?;
14        Ok(DataMessage {
15            metadata,
16            data: message.data()?,
17        })
18    }
19}
20
21impl<'a> TryFrom<(&Message<'a>, &MessageMetadata)> for DataMessage {
22    type Error = GribberishError;
23
24    fn try_from(message: (&Message<'a>, &MessageMetadata)) -> Result<Self, Self::Error> {
25        Ok(DataMessage {
26            metadata: message.1.clone(),
27            data: message.0.data()?,
28        })
29    }
30}