p2panda_auth/group/
member.rs1#[cfg(any(test, feature = "serde"))]
4use serde::{Deserialize, Serialize};
5
6use crate::traits::IdentityHandle;
7
8#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, PartialOrd, Ord)]
13#[cfg_attr(any(test, feature = "serde"), derive(Deserialize, Serialize))]
14pub enum GroupMember<ID> {
15 Individual(ID),
16 Group(ID),
17}
18
19impl<ID> GroupMember<ID>
20where
21 ID: Copy,
22{
23 pub fn id(&self) -> ID {
25 match self {
26 GroupMember::Individual(id) => *id,
27 GroupMember::Group(id) => *id,
28 }
29 }
30
31 pub fn is_group(&self) -> bool {
33 match self {
34 GroupMember::Individual(_) => false,
35 GroupMember::Group(_) => true,
36 }
37 }
38
39 pub fn is_individual(&self) -> bool {
41 !self.is_group()
42 }
43}
44
45impl<ID> IdentityHandle for GroupMember<ID> where ID: IdentityHandle {}