gribberish/
data_message.rs1use 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}