From 97ae0973c31dd904a10387e4a18766e22bf6df8a Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Thu, 29 Dec 2022 22:00:09 +0100 Subject: [PATCH] Wrap status id in helper type This wrapper type ensures that the status id cannot accidentially be compared to some other string that represents something entirely else. Signed-off-by: Matthias Beyer --- entities/src/status.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/entities/src/status.rs b/entities/src/status.rs index eddda74..dd0cf84 100644 --- a/entities/src/status.rs +++ b/entities/src/status.rs @@ -9,7 +9,7 @@ use time::{serde::iso8601, OffsetDateTime}; #[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] pub struct Status { /// The ID of the status. - pub id: String, + pub id: StatusId, /// A Fediverse-unique resource ID. pub uri: String, /// URL to the status page (can be remote) @@ -65,6 +65,17 @@ pub struct Status { pub pinned: Option, } +/// Wrapper type for a status ID string +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +#[serde(transparent)] +pub struct StatusId(String); + +impl AsRef for StatusId { + fn as_ref(&self) -> &str { + &self.0 + } +} + /// A mention of another user. #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] pub struct Mention {