1use serde::{Deserialize, Serialize};
7
8#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize, Deserialize)]
11pub enum ThreadPointer {
12 Event {
13 id: String,
14 #[serde(default, skip_serializing_if = "Option::is_none")]
15 relay: Option<String>,
16 #[serde(default, skip_serializing_if = "Option::is_none")]
17 kind: Option<u32>,
18 },
19 Address {
20 coord: String,
21 #[serde(default, skip_serializing_if = "Option::is_none")]
22 relay: Option<String>,
23 #[serde(default, skip_serializing_if = "Option::is_none")]
24 kind: Option<u32>,
25 },
26 External {
27 uri: String,
28 },
29}
30
31impl ThreadPointer {
32 #[must_use]
35 pub fn event_id(&self) -> Option<&str> {
36 match self {
37 Self::Event { id, .. } => Some(id.as_str()),
38 _ => None,
39 }
40 }
41}