basyx_rs/
extension.rs

1// SPDX-FileCopyrightText: 2023 Jan Hecht
2//
3// SPDX-License-Identifier: MIT
4
5use crate::{DataTypeDefXsd, Reference};
6use serde::{Deserialize, Serialize};
7
8#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
9pub struct Extension {
10    #[serde(skip_serializing_if = "Option::is_none")]
11    #[serde(rename = "semanticId")]
12    pub semantic_id: Option<Reference>,
13
14    #[serde(skip_serializing_if = "Option::is_none")]
15    #[serde(rename = "supplementalSemanticIds")]
16    pub supplemental_semantic_ids: Option<Vec<Reference>>,
17
18    pub name: String,
19
20    #[serde(skip_serializing_if = "Option::is_none")]
21    #[serde(rename = "valueType")]
22    pub value_type: Option<DataTypeDefXsd>,
23
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub value: Option<String>,
26
27    #[serde(skip_serializing_if = "Option::is_none")]
28    #[serde(rename = "refersTo")]
29    pub refers_to: Option<Vec<Reference>>,
30}
31
32impl Extension {
33    pub fn new(name: String) -> Self {
34        Self {
35            semantic_id: None,
36            supplemental_semantic_ids: None,
37            name,
38            value_type: None,
39            value: None,
40            refers_to: None,
41        }
42    }
43}