1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
use serde_repr::{Deserialize_repr, Serialize_repr}; #[derive( Clone, Copy, Debug, Deserialize_repr, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize_repr, )] #[repr(u8)] pub enum ChannelType { GuildText = 0, Private = 1, GuildVoice = 2, Group = 3, GuildCategory = 4, GuildNews = 5, GuildStore = 6, } impl ChannelType { pub fn name(self) -> &'static str { match self { Self::Group => "Group", Self::GuildCategory => "GuildCategory", Self::GuildNews => "GuildNews", Self::GuildStore => "GuildStore", Self::GuildText => "GuildText", Self::GuildVoice => "GuildVoice", Self::Private => "Private", } } } #[cfg(test)] mod tests { use super::ChannelType; use serde_test::Token; #[test] fn test_variants() { serde_test::assert_tokens(&ChannelType::GuildText, &[Token::U8(0)]); serde_test::assert_tokens(&ChannelType::Private, &[Token::U8(1)]); serde_test::assert_tokens(&ChannelType::GuildVoice, &[Token::U8(2)]); serde_test::assert_tokens(&ChannelType::Group, &[Token::U8(3)]); serde_test::assert_tokens(&ChannelType::GuildCategory, &[Token::U8(4)]); serde_test::assert_tokens(&ChannelType::GuildNews, &[Token::U8(5)]); serde_test::assert_tokens(&ChannelType::GuildStore, &[Token::U8(6)]); } #[test] fn test_names() { assert_eq!("Group", ChannelType::Group.name()); assert_eq!("GuildCategory", ChannelType::GuildCategory.name()); assert_eq!("GuildNews", ChannelType::GuildNews.name()); assert_eq!("GuildStore", ChannelType::GuildStore.name()); assert_eq!("GuildText", ChannelType::GuildText.name()); assert_eq!("GuildVoice", ChannelType::GuildVoice.name()); assert_eq!("Private", ChannelType::Private.name()); } }