use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize, Deserialize)]
pub enum ThreadPointer {
Event {
id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
relay: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
kind: Option<u32>,
},
Address {
coord: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
relay: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
kind: Option<u32>,
},
External {
uri: String,
},
}
impl ThreadPointer {
#[must_use]
pub fn event_id(&self) -> Option<&str> {
match self {
Self::Event { id, .. } => Some(id.as_str()),
_ => None,
}
}
}