Skip to main content

stix_model/
version.rs

1//! STIX specification version seam.
2
3use serde::{Deserialize, Serialize};
4
5/// The STIX spec version a document conforms to. Phase 1 targets 2.1; the enum
6/// exists so version-specific behavior can be added without API churn.
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
8pub enum SpecVersion {
9    /// STIX 2.1 (the default and currently only supported version).
10    #[default]
11    #[serde(rename = "2.1")]
12    V2_1,
13}
14
15impl SpecVersion {
16    /// The canonical version string (e.g. `"2.1"`).
17    pub fn as_str(&self) -> &'static str {
18        match self {
19            SpecVersion::V2_1 => "2.1",
20        }
21    }
22}
23
24#[cfg(test)]
25mod tests {
26    use super::*;
27
28    #[test]
29    fn default_is_2_1() {
30        assert_eq!(SpecVersion::default(), SpecVersion::V2_1);
31        assert_eq!(SpecVersion::default().as_str(), "2.1");
32    }
33}