diff --git a/crates/matrix-sdk-base/src/rooms/mod.rs b/crates/matrix-sdk-base/src/rooms/mod.rs index b2ae1891d..42ba440ee 100644 --- a/crates/matrix-sdk-base/src/rooms/mod.rs +++ b/crates/matrix-sdk-base/src/rooms/mod.rs @@ -16,8 +16,8 @@ use ruma::{ redaction::OriginalSyncRoomRedactionEvent, tombstone::RoomTombstoneEventContent, topic::RoomTopicEventContent, }, - AnyStrippedStateEvent, AnySyncStateEvent, EmptyStateKey, RedactContent, - RedactedEventContent, StateEventContent, StrippedStateEvent, SyncStateEvent, + AnyStrippedStateEvent, AnySyncStateEvent, RedactContent, RedactedEventContent, + StateEventContent, StrippedStateEvent, SyncStateEvent, }, EventId, OwnedEventId, OwnedUserId, RoomVersionId, }; @@ -30,10 +30,9 @@ use serde::{de::DeserializeOwned, Deserialize, Serialize}; // // It is unclear why a Serialize bound on C::Redacted is not also required. #[derive(Clone, Debug, Deserialize, Serialize)] -enum MinimalStateEvent + RedactContent> +enum MinimalStateEvent where - C::Redacted: - StateEventContent + RedactedEventContent + DeserializeOwned, + C::Redacted: StateEventContent + RedactedEventContent + DeserializeOwned, { Original(OriginalMinimalStateEvent), Redacted(RedactedMinimalStateEvent), @@ -42,7 +41,7 @@ where #[derive(Clone, Debug, Deserialize, Serialize)] struct OriginalMinimalStateEvent where - C: StateEventContent, + C: StateEventContent, { content: C, event_id: Option, @@ -51,7 +50,7 @@ where #[derive(Clone, Debug, Deserialize, Serialize)] struct RedactedMinimalStateEvent where - C: StateEventContent + RedactedEventContent, + C: StateEventContent + RedactedEventContent, { content: C, event_id: Option, @@ -59,9 +58,8 @@ where impl MinimalStateEvent where - C: Clone + StateEventContent + RedactContent, - C::Redacted: - StateEventContent + RedactedEventContent + DeserializeOwned, + C: StateEventContent + RedactContent, + C::Redacted: StateEventContent + RedactedEventContent + DeserializeOwned, { fn event_id(&self) -> Option<&EventId> { match self { @@ -77,7 +75,10 @@ where } } - fn redact(&mut self, room_version: &RoomVersionId) { + fn redact(&mut self, room_version: &RoomVersionId) + where + C: Clone, + { if let MinimalStateEvent::Original(ev) = self { *self = MinimalStateEvent::Redacted(RedactedMinimalStateEvent { content: ev.content.clone().redact(room_version), @@ -89,11 +90,8 @@ where impl From<&SyncStateEvent> for MinimalStateEvent where - C: Clone + StateEventContent + RedactContent, - C::Redacted: Clone - + StateEventContent - + RedactedEventContent - + DeserializeOwned, + C: Clone + StateEventContent + RedactContent, + C::Redacted: Clone + StateEventContent + RedactedEventContent + DeserializeOwned, { fn from(ev: &SyncStateEvent) -> Self { match ev { @@ -111,11 +109,8 @@ where impl From<&StrippedStateEvent> for MinimalStateEvent where - C: Clone + StateEventContent + RedactContent, - C::Redacted: Clone - + StateEventContent - + RedactedEventContent - + DeserializeOwned, + C: Clone + StateEventContent + RedactContent, + C::Redacted: StateEventContent + RedactedEventContent + DeserializeOwned, { fn from(ev: &StrippedStateEvent) -> Self { Self::Original(OriginalMinimalStateEvent { content: ev.content.clone(), event_id: None }) @@ -337,9 +332,8 @@ trait OptionExt { impl OptionExt for Option> where - C: Clone + StateEventContent + RedactContent, - C::Redacted: - StateEventContent + RedactedEventContent + DeserializeOwned, + C: StateEventContent + RedactContent, + C::Redacted: StateEventContent + RedactedEventContent + DeserializeOwned, { fn has_event_id(&self, ev_id: &EventId) -> bool { self.as_ref().and_then(|ev| ev.event_id()).map_or(false, |id| id == ev_id)