Skip to main content

Crate fmi_schema

Crate fmi_schema 

Source
Expand description

§fmi-schema

github crates.io docs.rs build status

XML schema support for FMI 2.0 and 3.0. This crate is part of rust-fmi.

The reference XSI can be found at https://fmi-standard.org/downloads.

§Determining the FMI version

FMI 2.0 and 3.0 have different XML schemas.

The FMI version can initially be determined in a non-specific way by using minimal::MinModelDescription.

§Example

The traits::FmiModelDescription trait is implemented for both FMI2 and FMI3, and has serialize/deserialize methods.

#[cfg(feature = "fmi3")]
{
  // deserialize an XML string into a model:
  let xml = std::fs::read_to_string("tests/FMI3.xml").unwrap();
  let model: fmi_schema::fmi3::Fmi3ModelDescription = fmi_schema::deserialize(xml.as_str()).unwrap();
  // now serialize it back again:
  let xml = fmi_schema::serialize(&model, false).unwrap();
}

§License

Licensed under either of

at your option.

§Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

§Feature flags

  • fmi2 (enabled by default) — Enable support for FMI 2.0
  • fmi3 (enabled by default) — Enable support for FMI 3.0
  • arrow — Enable support for Apache Arrow Schema
  • serde — Enable serde support for deserialization

Modules§

date_time
DateTime support for FMI schema.
fmi2
FMI2.0 schema definitions
fmi3
FMI3.0 schema definitions
minimal
Minimal FMI definitions for determining FMI version.
traits
Common traits for FMI schema
utils
Utility functions for serde deserialization
variable_counts

Enums§

Error
MajorVersion
The major version of the FMI standard

Functions§

deserialize
serialize
Serialize a value to XML string. If fragment is true, the XML declaration is omitted.