datex_core/dif/
reference.rs1use 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}