Skip to main content

datex_core/dif/
reference.rs

1use crate::{
2    dif::{r#type::DIFTypeDefinition, value::DIFValueContainer},
3    shared_values::shared_container::{
4        SharedContainer, SharedContainerMutability, mutability_as_int,
5    },
6};
7use serde::{Deserialize, Serialize};
8
9#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
10pub struct DIFReference {
11    pub value: DIFValueContainer,
12    pub allowed_type: DIFTypeDefinition,
13    #[serde(rename = "mut")]
14    #[serde(with = "mutability_as_int")]
15    pub mutability: SharedContainerMutability,
16}
17
18impl DIFReference {
19    pub fn from_reference(reference: &SharedContainer) -> Self {
20        let value = DIFValueContainer::from_value_container(
21            &reference.value_container(),
22        );
23        let allowed_type =
24            DIFTypeDefinition::from_type_definition(&reference.allowed_type());
25        DIFReference {
26            value,
27            allowed_type,
28            mutability: reference.mutability(),
29        }
30    }
31}