From bb861cb828dedaae880d1f0cea759d79020f6c90 Mon Sep 17 00:00:00 2001 From: Max Audron Date: Wed, 26 Feb 2025 17:20:15 +0100 Subject: add MsgId and BufferId to objects where needed some objects where still handling BufferId or MsgId as their raw types which lead to errors now that the Types are properly parsed in the varinats --- src/primitive/msgid.rs | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'src/primitive/msgid.rs') diff --git a/src/primitive/msgid.rs b/src/primitive/msgid.rs index fb9b6af..27608fe 100644 --- a/src/primitive/msgid.rs +++ b/src/primitive/msgid.rs @@ -1,4 +1,4 @@ -#[derive(Copy, Clone, Debug, std::cmp::PartialEq)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default)] #[repr(transparent)] pub struct MsgId( #[cfg(not(feature = "long-message-id"))] pub i32, @@ -24,6 +24,31 @@ impl Deserialize for MsgId { } } +#[cfg(not(feature = "long-message-id"))] +impl From for MsgId { + fn from(value: i32) -> Self { + Self(value) + } +} + +#[cfg(feature = "long-message-id")] +impl From for MsgId { + fn from(value: i64) -> Self { + Self(value) + } +} + +impl std::ops::Deref for MsgId { + #[cfg(not(feature = "long-message-id"))] + type Target = i32; + #[cfg(feature = "long-message-id")] + type Target = i64; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + #[cfg(test)] mod tests { use super::*; -- cgit v1.2.3