tf2-enum 0.13.0

Provides enumerated types for models related to the Team Fortress 2 item schema.
Documentation
use serde::{Deserialize, Serialize};
use strum::{Display, EnumCount, EnumIter, EnumString};

/// Craft class.
#[derive(
    Debug,
    Clone,
    Copy,
    Eq,
    PartialEq,
    Ord,
    PartialOrd,
    Hash,
    Display,
    Deserialize,
    Serialize,
    EnumString,
    EnumIter,
    EnumCount,
)]
#[strum(serialize_all = "snake_case")]
#[serde(rename_all = "snake_case")]
#[allow(missing_docs)]
pub enum CraftClass {
    Weapon,
    Hat,
    CraftBar,
    HauntedHat,
    Tool,
    CraftToken,
    SupplyCrate,
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_craft_class_serialization() {
        let weapon = CraftClass::Weapon;
        let hat = CraftClass::Hat;
        let craft_bar = CraftClass::CraftBar;
        let haunted_hat = CraftClass::HauntedHat;
        let tool = CraftClass::Tool;
        let craft_token = CraftClass::CraftToken;
        let supply_crate = CraftClass::SupplyCrate;

        assert_eq!(serde_json::to_string(&weapon).unwrap(), "\"weapon\"");
        assert_eq!(serde_json::to_string(&hat).unwrap(), "\"hat\"");
        assert_eq!(serde_json::to_string(&craft_bar).unwrap(), "\"craft_bar\"");
        assert_eq!(serde_json::to_string(&haunted_hat).unwrap(), "\"haunted_hat\"");
        assert_eq!(serde_json::to_string(&tool).unwrap(), "\"tool\"");
        assert_eq!(serde_json::to_string(&craft_token).unwrap(), "\"craft_token\"");
        assert_eq!(serde_json::to_string(&supply_crate).unwrap(), "\"supply_crate\"");
    }
}