Skip to main content

melodium_share/
data.rs

1use super::{Attributes, DataTrait, Identifier};
2use melodium_common::descriptor::Data as CommonData;
3use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
6#[cfg_attr(feature = "webassembly", derive(tsify::Tsify))]
7#[cfg_attr(feature = "webassembly", tsify(into_wasm_abi, from_wasm_abi))]
8pub struct Data {
9    pub identifier: Identifier,
10    pub documentation: String,
11    pub implements: Vec<DataTrait>,
12    pub attributes: Attributes,
13}
14
15impl From<&dyn CommonData> for Data {
16    fn from(value: &dyn CommonData) -> Self {
17        Self {
18            identifier: value.identifier().into(),
19            documentation: value.documentation().to_string(),
20            implements: value.implements().iter().map(|dt| dt.into()).collect(),
21            attributes: value.attributes().into(),
22        }
23    }
24}