twilight_model/application/monetization/
sku_type.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
4#[serde(from = "u8", into = "u8")]
5pub enum SkuType {
6    Subscription,
7    SubscriptionGroup,
8    Unknown(u8),
9}
10
11impl From<u8> for SkuType {
12    fn from(value: u8) -> Self {
13        match value {
14            5 => SkuType::Subscription,
15            6 => SkuType::SubscriptionGroup,
16            other => SkuType::Unknown(other),
17        }
18    }
19}
20
21impl From<SkuType> for u8 {
22    fn from(value: SkuType) -> Self {
23        match value {
24            SkuType::Subscription => 5,
25            SkuType::SubscriptionGroup => 6,
26            SkuType::Unknown(other) => other,
27        }
28    }
29}
30
31#[cfg(test)]
32mod tests {
33    use super::SkuType;
34    use serde_test::Token;
35    #[test]
36    fn sku_type() {
37        serde_test::assert_tokens(&SkuType::Subscription, &[Token::U8(5)]);
38        serde_test::assert_tokens(&SkuType::SubscriptionGroup, &[Token::U8(6)]);
39        serde_test::assert_tokens(&SkuType::Unknown(3), &[Token::U8(3)]);
40    }
41}