Skip to main content

melodium_share/
generic.rs

1use super::DataTrait;
2use melodium_common::descriptor::Generic as CommonGeneric;
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 Generic {
9    pub name: String,
10    pub traits: Vec<DataTrait>,
11}
12
13impl From<&CommonGeneric> for Generic {
14    fn from(value: &CommonGeneric) -> Self {
15        Self {
16            name: value.name.clone(),
17            traits: value.traits.iter().map(|tr| tr.into()).collect(),
18        }
19    }
20}
21
22impl Into<CommonGeneric> for &Generic {
23    fn into(self) -> CommonGeneric {
24        CommonGeneric {
25            name: self.name.clone(),
26            traits: self.traits.iter().map(|tr| tr.into()).collect(),
27        }
28    }
29}
30
31impl Into<CommonGeneric> for Generic {
32    fn into(self) -> CommonGeneric {
33        CommonGeneric {
34            name: self.name,
35            traits: self.traits.into_iter().map(|tr| tr.into()).collect(),
36        }
37    }
38}