1#![doc=include_str!( "../README.md")]
2#![doc = document_features::document_features!()]
4#![deny(unsafe_code)]
5#![deny(clippy::all)]
6
7use std::fmt::Display;
8
9use thiserror::Error;
10
11pub mod date_time;
12#[cfg(feature = "fmi2")]
13pub mod fmi2;
14#[cfg(feature = "fmi3")]
15pub mod fmi3;
16pub mod minimal;
17pub mod traits;
18pub mod variable_counts;
19
20#[derive(Debug, PartialEq, Eq)]
22pub enum MajorVersion {
23 FMI1,
24 FMI2,
25 FMI3,
26}
27
28impl Display for MajorVersion {
29 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
30 match self {
31 MajorVersion::FMI1 => write!(f, "1.0"),
32 MajorVersion::FMI2 => write!(f, "2.0"),
33 MajorVersion::FMI3 => write!(f, "3.0"),
34 }
35 }
36}
37
38#[derive(Debug, Error, PartialEq, Eq)]
39pub enum Error {
40 #[error("Variable {0} not found")]
41 VariableNotFound(String),
42
43 #[error(transparent)]
44 Semver(#[from] lenient_semver::parser::OwnedError),
45
46 #[error("Error parsing XML: {0}")]
47 XmlParse(String),
48
49 #[error("Error in model: {0}")]
50 Model(String),
51}
52
53#[inline]
56fn default_wrapper<T: Default>() -> T {
57 T::default()
58}