From 7f01a6d73bc3cfb6dc98c82563bdc456be076756 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Sun, 18 Apr 2021 14:32:54 +0200 Subject: [PATCH] events: Make TypingEventContent non-exhaustive and derive Default for it --- ruma-events/src/typing.rs | 10 +++++++++- ruma-events/tests/ephemeral_event.rs | 10 ++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/ruma-events/src/typing.rs b/ruma-events/src/typing.rs index a6fe6f7d..2668c8ac 100644 --- a/ruma-events/src/typing.rs +++ b/ruma-events/src/typing.rs @@ -10,9 +10,17 @@ use crate::EphemeralRoomEvent; pub type TypingEvent = EphemeralRoomEvent; /// The payload for `TypingEvent`. -#[derive(Clone, Debug, Deserialize, Serialize, EphemeralRoomEventContent)] +#[derive(Clone, Debug, Default, Deserialize, Serialize, EphemeralRoomEventContent)] +#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)] #[ruma_event(type = "m.typing")] pub struct TypingEventContent { /// The list of user IDs typing in this room, if any. pub user_ids: Vec, } + +impl TypingEventContent { + /// Creates a new `TypingEventContent` with the given user IDs. + pub fn new(user_ids: Vec) -> Self { + Self { user_ids } + } +} diff --git a/ruma-events/tests/ephemeral_event.rs b/ruma-events/tests/ephemeral_event.rs index 32662dda..aa1e6d3b 100644 --- a/ruma-events/tests/ephemeral_event.rs +++ b/ruma-events/tests/ephemeral_event.rs @@ -15,9 +15,9 @@ use ruma_events::{ #[test] fn ephemeral_serialize_typing() { let aliases_event = EphemeralRoomEvent { - content: AnyEphemeralRoomEventContent::Typing(TypingEventContent { - user_ids: vec![user_id!("@carl:example.com")], - }), + content: AnyEphemeralRoomEventContent::Typing(TypingEventContent::new(vec![user_id!( + "@carl:example.com" + )])), room_id: room_id!("!roomid:room.com"), }; @@ -49,9 +49,7 @@ fn deserialize_ephemeral_typing() { .deserialize() .unwrap(), EphemeralRoomEvent { - content: AnyEphemeralRoomEventContent::Typing(TypingEventContent { - user_ids, - }), + content: AnyEphemeralRoomEventContent::Typing(TypingEventContent { user_ids, .. }), room_id, } if user_ids[0] == user_id!("@carl:example.com") && room_id == room_id!("!roomid:room.com")