basyx_rs/
lib.rs

1// SPDX-FileCopyrightText: 2021 Fraunhofer Institute for Experimental Software Engineering IESE
2// SPDX-FileCopyrightText: 2023 Jan Hecht
3//
4// SPDX-License-Identifier: MIT
5
6//! # A Rust library to work with Asset Administration Shells (AAS)
7//!
8//! # Examples
9//!
10//! ## Creating a Submodel and Serialize to JSON
11//! ```no_run
12//! use basyx_rs::{DataTypeDefXsd, id_short_from_str};
13//! use basyx_rs::prelude::*;
14//! use std::io::Write;
15//!
16//! let mut property = Property::new(DataTypeDefXsd::XsBoolean);
17//! property.category = Some(format!("{}", Category::CONSTANT));
18//!
19//! // id_short mandatory for all non-identifiable referables.
20//! if let Some(id_short) = id_short_from_str("my_property1").ok() {
21//!         property.id_short = Some(id_short);
22//!    }
23//!
24//! let sme = SubmodelElement::Property(property);
25//!
26//! let mut submodel = Submodel::new("https://example.com/ids/1234567890".to_string());
27//!
28//! submodel.add_submodel_element(sme.clone());
29//!
30//! let json = serde_json::to_vec(&submodel);
31//! let mut file = std::fs::OpenOptions::new()
32//!     .create(true)
33//!     .write(true)
34//!     .read(true)
35//!     .truncate(true)
36//!     .open("submodel1.json");
37//! let json = json.unwrap();
38//! let buf: &[u8] = &json; // impl Deref for Vec<T> with Target = [T]
39//! file.unwrap().write(buf);
40//! ```
41
42#![forbid(unsafe_code)]
43
44mod administrative_information;
45mod asset_administration_shell;
46mod asset_information;
47mod asset_kind;
48mod category;
49mod concept_description;
50mod data_object_type_name;
51mod data_specification_content;
52mod data_specification_iec61360;
53mod data_type_def_xsd;
54mod data_type_iec61360;
55mod embedded_data_specification;
56mod environment;
57mod extension;
58mod id_short_from_string;
59mod key;
60mod key_types;
61mod lang_string;
62mod level_type;
63mod modelling_kind;
64pub mod prelude;
65mod qualifier;
66mod qualifier_kind;
67mod reference;
68mod reference_types;
69mod resource;
70mod specific_asset_id;
71mod submodel;
72pub mod submodel_element;
73mod value_list;
74mod value_reference_pair;
75
76pub use administrative_information::AdministrativeInformation;
77pub use asset_administration_shell::AssetAdministrationShell;
78pub use asset_information::AssetInformation;
79pub use asset_kind::AssetKind;
80pub use category::Category;
81pub use concept_description::ConceptDescription;
82pub use data_object_type_name::DataObjectTypeName;
83pub use data_specification_content::DataSpecificationContent;
84pub use data_specification_iec61360::DataSpecificationIec61360;
85pub use data_type_def_xsd::DataTypeDefXsd;
86pub use data_type_iec61360::DataTypeIec61360;
87pub use embedded_data_specification::EmbeddedDataSpecification;
88pub use environment::Environment;
89pub use extension::Extension;
90pub use id_short_from_string::*;
91pub use key::Key;
92pub use key_types::KeyTypes;
93pub use lang_string::LangString;
94pub use level_type::LevelType;
95pub use modelling_kind::ModellingKind;
96pub use qualifier::Qualifier;
97pub use qualifier_kind::QualifierKind;
98pub use reference::Reference;
99pub use reference_types::ReferenceTypes;
100pub use resource::Resource;
101pub use specific_asset_id::SpecificAssetId;
102pub use submodel::Submodel;
103pub use value_list::ValueList;
104pub use value_reference_pair::ValueReferencePair;