deaddrop_core/
destination.rs1use crate::ids::PeerId;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
5#[serde(tag = "kind", rename_all = "snake_case")]
6pub enum Destination {
7 One { peer: PeerId },
8 Many { peers: Vec<PeerId> },
9 Group { id: String },
10 Public,
11}
12
13impl Destination {
14 pub fn includes(&self, peer: &PeerId) -> bool {
15 match self {
16 Self::One { peer: p } => p == peer,
17 Self::Many { peers } => peers.contains(peer),
18 Self::Group { .. } => false,
19 Self::Public => true,
20 }
21 }
22
23 pub fn is_public(&self) -> bool {
24 matches!(self, Self::Public)
25 }
26}