melodium_share/
generic.rs1use 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}