p2panda_auth/group/member.rs
1// SPDX-License-Identifier: MIT OR Apache-2.0
2
3use crate::traits::IdentityHandle;
4
5/// A group member which can be a single individual or another group.
6///
7/// The `Group` variant can be used to express nested group relations. In both cases, the member
8/// identifier is the same generic ID.
9#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, PartialOrd, Ord)]
10pub enum GroupMember<ID> {
11 Individual(ID),
12 Group(ID),
13}
14
15impl<ID> GroupMember<ID>
16where
17 ID: Copy,
18{
19 /// Return the ID of a group member.
20 pub fn id(&self) -> ID {
21 match self {
22 GroupMember::Individual(id) => *id,
23 GroupMember::Group(id) => *id,
24 }
25 }
26}
27
28impl<ID> IdentityHandle for GroupMember<ID> where ID: IdentityHandle {}