twilight_model/application/monetization/
sku_type.rs1use 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}