From 38ba38228aee88f7773d69068645818838d691bb Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Sat, 29 Jan 2022 01:31:18 +0100 Subject: [PATCH] events: Use PrivOwnedStr for #[doc(hidden)] event_type field --- crates/ruma-events-macros/src/event_enum.rs | 17 +++++++++++------ crates/ruma-events/src/lib.rs | 5 ++++- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/crates/ruma-events-macros/src/event_enum.rs b/crates/ruma-events-macros/src/event_enum.rs index 45051019..dd9b2567 100644 --- a/crates/ruma-events-macros/src/event_enum.rs +++ b/crates/ruma-events-macros/src/event_enum.rs @@ -320,7 +320,7 @@ fn expand_content_enum( #[doc(hidden)] #[serde(serialize_with = #serialize_custom_event_error_path)] _Custom { - event_type: ::std::string::String, + event_type: crate::PrivOwnedStr, }, } @@ -329,7 +329,7 @@ fn expand_content_enum( fn event_type(&self) -> &::std::primitive::str { match self { #( #variant_arms(content) => content.event_type(), )* - Self::_Custom { event_type } => &event_type, + Self::_Custom { event_type } => &event_type.0, } } @@ -345,7 +345,9 @@ fn expand_content_enum( } )* ty => { - ::std::result::Result::Ok(Self::_Custom { event_type: ty.to_owned() }) + ::std::result::Result::Ok(Self::_Custom { + event_type: crate::PrivOwnedStr(ty.into()), + }) } } } @@ -483,7 +485,9 @@ fn expand_accessor_methods( )* Self::_Custom(event) => { event.prev_content.as_ref().map(|c| #content_enum::_Custom { - event_type: #ruma_events::EventContent::event_type(c).to_owned(), + event_type: crate::PrivOwnedStr( + #ruma_events::EventContent::event_type(c).into(), + ), }) }, } @@ -497,8 +501,9 @@ fn expand_accessor_methods( match self { #( #self_variants(event) => #content_variants(event.content.clone()), )* Self::_Custom(event) => #content_enum::_Custom { - event_type: #ruma_events::EventContent::event_type(&event.content) - .to_owned(), + event_type: crate::PrivOwnedStr( + #ruma_events::EventContent::event_type(&event.content).into(), + ), }, } } diff --git a/crates/ruma-events/src/lib.rs b/crates/ruma-events/src/lib.rs index 097ab965..d6e1bf27 100644 --- a/crates/ruma-events/src/lib.rs +++ b/crates/ruma-events/src/lib.rs @@ -411,7 +411,10 @@ pub struct PrivOwnedStr(Box); /// only be created by deserializing from an unknown event type. #[doc(hidden)] #[allow(clippy::ptr_arg)] -pub fn serialize_custom_event_error(_: &String, _: S) -> Result { +pub fn serialize_custom_event_error( + _: &PrivOwnedStr, + _: S, +) -> Result { Err(serde::ser::Error::custom( "Failed to serialize event [content] enum: Unknown event type.\n\ To send custom events, turn them into `Raw` by going through