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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
use std::sync::Arc; use twilight_model::{ guild::Emoji, id::{EmojiId, RoleId}, user::User, }; #[derive(Clone, Debug, Eq, PartialEq)] pub struct CachedEmoji { pub id: EmojiId, pub animated: bool, pub name: String, pub managed: bool, pub require_colons: bool, pub roles: Vec<RoleId>, pub user: Option<Arc<User>>, pub available: bool, } impl PartialEq<Emoji> for CachedEmoji { fn eq(&self, other: &Emoji) -> bool { self.id == other.id && self.animated == other.animated && self.managed == other.managed && self.name == other.name && self.require_colons == other.require_colons && self.roles == other.roles && self.available == other.available } } #[cfg(test)] mod tests { use super::CachedEmoji; use std::fmt::Debug; use twilight_model::{guild::Emoji, id::EmojiId}; #[test] fn test_eq_emoji() { let emoji = Emoji { id: EmojiId(123), animated: true, name: "foo".to_owned(), managed: false, require_colons: true, roles: vec![], user: None, available: true, }; let cached = CachedEmoji { id: EmojiId(123), animated: true, name: "foo".to_owned(), managed: false, require_colons: true, roles: vec![], user: None, available: true, }; assert_eq!(cached, emoji); } #[test] fn test_fields() { static_assertions::assert_fields!( CachedEmoji: id, animated, name, managed, require_colons, roles, user ); } #[test] fn test_impls() { static_assertions::assert_impl_all!(CachedEmoji: Clone, Debug, Eq, PartialEq); } }