use std::fmt;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone, Eq, PartialEq, Hash, Debug)]
#[cfg_attr(not(feature = "unknown_variants"), derive(Copy))]
#[cfg_attr(
all(
not(feature = "unknown_variants"),
not(feature = "unknown_variants_slim")
),
non_exhaustive
)]
#[cfg_attr(test, serde(deny_unknown_fields))]
#[serde(rename_all = "snake_case")]
pub enum SetType {
Core,
Eternal,
Expansion,
Masters,
Masterpiece,
FromTheVault,
Spellbook,
PremiumDeck,
DuelDeck,
DraftInnovation,
TreasureChest,
Commander,
Planechase,
Archenemy,
Vanguard,
Funny,
Starter,
#[serde(rename = "box")]
GiftBox,
Promo,
Token,
Memorabilia,
Alchemy,
Arsenal,
Minigame,
#[cfg_attr(
docsrs,
doc(cfg(any(feature = "unknown_variants", feature = "unknown_variants_slim")))
)]
#[cfg(feature = "unknown_variants")]
#[serde(untagged)]
Unknown(Box<str>),
#[cfg_attr(
docsrs,
doc(cfg(any(feature = "unknown_variants", feature = "unknown_variants_slim")))
)]
#[cfg(all(not(feature = "unknown_variants"), feature = "unknown_variants_slim"))]
#[serde(other)]
Unknown,
}
impl fmt::Display for SetType {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(
f,
"{}",
match self {
SetType::Core => "core",
SetType::Eternal => "eternal",
SetType::Expansion => "expansion",
SetType::Masters => "masters",
SetType::Masterpiece => "masterpiece",
SetType::FromTheVault => "from_the_vault",
SetType::Spellbook => "spellbook",
SetType::PremiumDeck => "premium_deck",
SetType::DuelDeck => "duel_deck",
SetType::DraftInnovation => "draft_innovation",
SetType::TreasureChest => "treasure_chest",
SetType::Commander => "commander",
SetType::Planechase => "planechase",
SetType::Archenemy => "archenemy",
SetType::Vanguard => "vanguard",
SetType::Funny => "funny",
SetType::Starter => "starter",
SetType::GiftBox => "gift_box",
SetType::Promo => "promo",
SetType::Token => "token",
SetType::Memorabilia => "memorabilia",
SetType::Alchemy => "alchemy",
SetType::Arsenal => "arsenal",
SetType::Minigame => "minigame",
#[cfg(feature = "unknown_variants")]
SetType::Unknown(s) => s,
#[cfg(all(not(feature = "unknown_variants"), feature = "unknown_variants_slim"))]
SetType::Unknown => "unknown-set-type",
}
)
}
}