From 0cdd6a7b0ff0ca96213d8295f1af14ee58bee685 Mon Sep 17 00:00:00 2001 From: Naman Sandilya Date: Wed, 27 Apr 2022 16:00:24 +0530 Subject: [PATCH] Return owned value for origin_server_ts accessors --- crates/ruma-common/src/events/enums.rs | 4 ++-- crates/ruma-common/src/events/kinds.rs | 6 +++--- crates/ruma-common/src/events/room/redaction.rs | 12 ++++++------ crates/ruma-macros/src/events/event_enum.rs | 13 +++++++------ 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/crates/ruma-common/src/events/enums.rs b/crates/ruma-common/src/events/enums.rs index 158b780f..253ca9d1 100644 --- a/crates/ruma-common/src/events/enums.rs +++ b/crates/ruma-common/src/events/enums.rs @@ -152,7 +152,7 @@ pub enum AnyRoomEvent { } impl AnyRoomEvent { - room_ev_accessor!(origin_server_ts: &MilliSecondsSinceUnixEpoch); + room_ev_accessor!(origin_server_ts: MilliSecondsSinceUnixEpoch); room_ev_accessor!(room_id: &RoomId); room_ev_accessor!(event_id: &EventId); room_ev_accessor!(sender: &UserId); @@ -180,7 +180,7 @@ pub enum AnySyncRoomEvent { } impl AnySyncRoomEvent { - room_ev_accessor!(origin_server_ts: &MilliSecondsSinceUnixEpoch); + room_ev_accessor!(origin_server_ts: MilliSecondsSinceUnixEpoch); room_ev_accessor!(event_id: &EventId); room_ev_accessor!(sender: &UserId); diff --git a/crates/ruma-common/src/events/kinds.rs b/crates/ruma-common/src/events/kinds.rs index b9467a85..44bb3a80 100644 --- a/crates/ruma-common/src/events/kinds.rs +++ b/crates/ruma-common/src/events/kinds.rs @@ -446,10 +446,10 @@ macro_rules! impl_possibly_redacted_event { } /// Returns this event's `origin_server_ts` field. - pub fn origin_server_ts(&self) -> &MilliSecondsSinceUnixEpoch { + pub fn origin_server_ts(&self) -> MilliSecondsSinceUnixEpoch { match self { - Self::Original(ev) => &ev.origin_server_ts, - Self::Redacted(ev) => &ev.origin_server_ts, + Self::Original(ev) => ev.origin_server_ts, + Self::Redacted(ev) => ev.origin_server_ts, } } diff --git a/crates/ruma-common/src/events/room/redaction.rs b/crates/ruma-common/src/events/room/redaction.rs index bff6326c..1fd6d4b3 100644 --- a/crates/ruma-common/src/events/room/redaction.rs +++ b/crates/ruma-common/src/events/room/redaction.rs @@ -216,10 +216,10 @@ impl RoomRedactionEvent { } /// Returns this event's `origin_server_ts` field. - pub fn origin_server_ts(&self) -> &MilliSecondsSinceUnixEpoch { + pub fn origin_server_ts(&self) -> MilliSecondsSinceUnixEpoch { match self { - Self::Original(ev) => &ev.origin_server_ts, - Self::Redacted(ev) => &ev.origin_server_ts, + Self::Original(ev) => ev.origin_server_ts, + Self::Redacted(ev) => ev.origin_server_ts, } } @@ -293,10 +293,10 @@ impl SyncRoomRedactionEvent { } /// Returns this event's `origin_server_ts` field. - pub fn origin_server_ts(&self) -> &MilliSecondsSinceUnixEpoch { + pub fn origin_server_ts(&self) -> MilliSecondsSinceUnixEpoch { match self { - Self::Original(ev) => &ev.origin_server_ts, - Self::Redacted(ev) => &ev.origin_server_ts, + Self::Original(ev) => ev.origin_server_ts, + Self::Redacted(ev) => ev.origin_server_ts, } } diff --git a/crates/ruma-macros/src/events/event_enum.rs b/crates/ruma-macros/src/events/event_enum.rs index 26d7443b..8fed53d5 100644 --- a/crates/ruma-macros/src/events/event_enum.rs +++ b/crates/ruma-macros/src/events/event_enum.rs @@ -470,13 +470,14 @@ fn expand_accessor_methods( let field_type = field_return_type(name, ruma_common); let variants = variants.iter().map(|v| v.match_arm(quote! { Self })); let call_parens = maybe_redacted.then(|| quote! { () }); + let ampersand = (*name != "origin_server_ts").then(|| quote! { & }); quote! { #[doc = #docs] - pub fn #ident(&self) -> &#field_type { + pub fn #ident(&self) -> #field_type { match self { - #( #variants(event) => &event.#ident #call_parens, )* - Self::_Custom(event) => &event.#ident #call_parens, + #( #variants(event) => #ampersand event.#ident #call_parens, )* + Self::_Custom(event) => #ampersand event.#ident #call_parens, } } } @@ -584,9 +585,9 @@ fn event_module_path(name: &LitStr) -> Vec { fn field_return_type(name: &str, ruma_common: &TokenStream) -> TokenStream { match name { "origin_server_ts" => quote! { #ruma_common::MilliSecondsSinceUnixEpoch }, - "room_id" => quote! { #ruma_common::RoomId }, - "event_id" => quote! { #ruma_common::EventId }, - "sender" => quote! { #ruma_common::UserId }, + "room_id" => quote! { &#ruma_common::RoomId }, + "event_id" => quote! { &#ruma_common::EventId }, + "sender" => quote! { &#ruma_common::UserId }, _ => panic!("the `ruma_macros::event_enum::EVENT_FIELD` const was changed"), } }