Replace impl_enum with strum::{EnumString,Display}
Replace the impl_enum! macro, which automatically derives instances of std::fmt::Display and std::string::FromStr, with derive macros from the strum crate (Display and EnumString resp.). Closes #90.
This commit is contained in:
		
							parent
							
								
									d083127297
								
							
						
					
					
						commit
						d84de004c8
					
				| @ -20,6 +20,7 @@ ruma-identifiers = "0.16.1" | |||||||
| ruma-serde = "0.2.1" | ruma-serde = "0.2.1" | ||||||
| serde = { version = "1.0.110", features = ["derive"] } | serde = { version = "1.0.110", features = ["derive"] } | ||||||
| serde_json = { version = "1.0.53", features = ["raw_value"] } | serde_json = { version = "1.0.53", features = ["raw_value"] } | ||||||
|  | strum = { version = "0.18.0", features = ["derive"] } | ||||||
| 
 | 
 | ||||||
| [dev-dependencies] | [dev-dependencies] | ||||||
| maplit = "1.0.2" | maplit = "1.0.2" | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								src/call.rs
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								src/call.rs
									
									
									
									
									
								
							| @ -3,6 +3,7 @@ | |||||||
| //! This module also contains types shared by events in its child namespaces.
 | //! This module also contains types shared by events in its child namespaces.
 | ||||||
| 
 | 
 | ||||||
| use serde::{Deserialize, Serialize}; | use serde::{Deserialize, Serialize}; | ||||||
|  | use strum::{Display, EnumString}; | ||||||
| 
 | 
 | ||||||
| pub mod answer; | pub mod answer; | ||||||
| pub mod candidates; | pub mod candidates; | ||||||
| @ -21,9 +22,10 @@ pub struct SessionDescription { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// The type of VoIP session description.
 | /// The type of VoIP session description.
 | ||||||
| #[derive(Clone, Copy, Debug, PartialEq, Deserialize, Serialize)] | #[derive(Clone, Copy, Debug, Display, EnumString, PartialEq, Deserialize, Serialize)] | ||||||
| #[non_exhaustive] | #[non_exhaustive] | ||||||
| #[serde(rename_all = "lowercase")] | #[serde(rename_all = "lowercase")] | ||||||
|  | #[strum(serialize_all = "lowercase")] | ||||||
| pub enum SessionDescriptionType { | pub enum SessionDescriptionType { | ||||||
|     /// An answer.
 |     /// An answer.
 | ||||||
|     Answer, |     Answer, | ||||||
| @ -31,10 +33,3 @@ pub enum SessionDescriptionType { | |||||||
|     /// An offer.
 |     /// An offer.
 | ||||||
|     Offer, |     Offer, | ||||||
| } | } | ||||||
| 
 |  | ||||||
| impl_enum! { |  | ||||||
|     SessionDescriptionType { |  | ||||||
|         Answer => "answer", |  | ||||||
|         Offer => "offer", |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  | |||||||
| @ -3,6 +3,7 @@ | |||||||
| use js_int::UInt; | use js_int::UInt; | ||||||
| use ruma_events_macros::ruma_event; | use ruma_events_macros::ruma_event; | ||||||
| use serde::{Deserialize, Serialize}; | use serde::{Deserialize, Serialize}; | ||||||
|  | use strum::{Display, EnumString}; | ||||||
| 
 | 
 | ||||||
| ruma_event! { | ruma_event! { | ||||||
|     /// Sent by either party to signal their termination of the call. This can be sent either once
 |     /// Sent by either party to signal their termination of the call. This can be sent either once
 | ||||||
| @ -29,8 +30,9 @@ ruma_event! { | |||||||
| /// This should not be provided when the user naturally ends or rejects the call. When there was an
 | /// This should not be provided when the user naturally ends or rejects the call. When there was an
 | ||||||
| /// error in the call negotiation, this should be `ice_failed` for when ICE negotiation fails or
 | /// error in the call negotiation, this should be `ice_failed` for when ICE negotiation fails or
 | ||||||
| /// `invite_timeout` for when the other party did not answer in time.
 | /// `invite_timeout` for when the other party did not answer in time.
 | ||||||
| #[derive(Clone, Copy, Debug, PartialEq, Deserialize, Serialize)] | #[derive(Clone, Copy, Debug, Display, EnumString, PartialEq, Deserialize, Serialize)] | ||||||
| #[serde(rename_all = "snake_case")] | #[serde(rename_all = "snake_case")] | ||||||
|  | #[strum(serialize_all = "snake_case")] | ||||||
| pub enum Reason { | pub enum Reason { | ||||||
|     /// ICE negotiation failure.
 |     /// ICE negotiation failure.
 | ||||||
|     IceFailed, |     IceFailed, | ||||||
| @ -38,10 +40,3 @@ pub enum Reason { | |||||||
|     /// Party did not answer in time.
 |     /// Party did not answer in time.
 | ||||||
|     InviteTimeout, |     InviteTimeout, | ||||||
| } | } | ||||||
| 
 |  | ||||||
| impl_enum! { |  | ||||||
|     Reason { |  | ||||||
|         IceFailed => "ice_failed", |  | ||||||
|         InviteTimeout => "invite_timeout", |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  | |||||||
| @ -3,6 +3,7 @@ | |||||||
| //! This module also contains types shared by events in its child namespaces.
 | //! This module also contains types shared by events in its child namespaces.
 | ||||||
| 
 | 
 | ||||||
| use serde::{Deserialize, Serialize}; | use serde::{Deserialize, Serialize}; | ||||||
|  | use strum::{Display, EnumString}; | ||||||
| 
 | 
 | ||||||
| pub mod accept; | pub mod accept; | ||||||
| pub mod cancel; | pub mod cancel; | ||||||
| @ -12,76 +13,51 @@ pub mod request; | |||||||
| pub mod start; | pub mod start; | ||||||
| 
 | 
 | ||||||
| /// A hash algorithm.
 | /// A hash algorithm.
 | ||||||
| #[derive(Clone, Copy, Debug, Serialize, PartialEq, Deserialize)] | #[derive(Clone, Copy, Debug, Display, EnumString, Serialize, PartialEq, Deserialize)] | ||||||
| pub enum HashAlgorithm { | pub enum HashAlgorithm { | ||||||
|     /// The SHA256 hash algorithm.
 |     /// The SHA256 hash algorithm.
 | ||||||
|     #[serde(rename = "sha256")] |     #[serde(rename = "sha256")] | ||||||
|  |     #[strum(serialize = "sha256")] | ||||||
|     Sha256, |     Sha256, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl_enum! { |  | ||||||
|     HashAlgorithm { |  | ||||||
|         Sha256 => "sha256", |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /// A key agreement protocol.
 | /// A key agreement protocol.
 | ||||||
| #[derive(Clone, Copy, Debug, Serialize, PartialEq, Deserialize)] | #[derive(Clone, Copy, Debug, Display, EnumString, Serialize, PartialEq, Deserialize)] | ||||||
| pub enum KeyAgreementProtocol { | pub enum KeyAgreementProtocol { | ||||||
|     /// The [Curve25519](https://cr.yp.to/ecdh.html) key agreement protocol.
 |     /// The [Curve25519](https://cr.yp.to/ecdh.html) key agreement protocol.
 | ||||||
|     #[serde(rename = "curve25519")] |     #[serde(rename = "curve25519")] | ||||||
|  |     #[strum(serialize = "curve25519")] | ||||||
|     Curve25519, |     Curve25519, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl_enum! { |  | ||||||
|     KeyAgreementProtocol { |  | ||||||
|         Curve25519 => "curve25519", |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /// A message authentication code algorithm.
 | /// A message authentication code algorithm.
 | ||||||
| #[derive(Clone, Copy, Debug, Serialize, PartialEq, Deserialize)] | #[derive(Clone, Copy, Debug, Display, EnumString, Serialize, PartialEq, Deserialize)] | ||||||
| pub enum MessageAuthenticationCode { | pub enum MessageAuthenticationCode { | ||||||
|     /// The HKDF-HMAC-SHA256 MAC.
 |     /// The HKDF-HMAC-SHA256 MAC.
 | ||||||
|     #[serde(rename = "hkdf-hmac-sha256")] |     #[serde(rename = "hkdf-hmac-sha256")] | ||||||
|  |     #[strum(serialize = "hkdf-hmac-sha256")] | ||||||
|     HkdfHmacSha256, |     HkdfHmacSha256, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl_enum! { |  | ||||||
|     MessageAuthenticationCode { |  | ||||||
|         HkdfHmacSha256 => "hkdf-hmac-sha256", |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /// A Short Authentication String method.
 | /// A Short Authentication String method.
 | ||||||
| #[derive(Clone, Copy, Debug, Serialize, PartialEq, Deserialize)] | #[derive(Clone, Copy, Debug, Display, EnumString, Serialize, PartialEq, Deserialize)] | ||||||
| pub enum ShortAuthenticationString { | pub enum ShortAuthenticationString { | ||||||
|     /// The decimal method.
 |     /// The decimal method.
 | ||||||
|     #[serde(rename = "decimal")] |     #[serde(rename = "decimal")] | ||||||
|  |     #[strum(serialize = "decimal")] | ||||||
|     Decimal, |     Decimal, | ||||||
| 
 | 
 | ||||||
|     /// The emoji method.
 |     /// The emoji method.
 | ||||||
|     #[serde(rename = "emoji")] |     #[serde(rename = "emoji")] | ||||||
|  |     #[strum(serialize = "emoji")] | ||||||
|     Emoji, |     Emoji, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl_enum! { |  | ||||||
|     ShortAuthenticationString { |  | ||||||
|         Decimal => "decimal", |  | ||||||
|         Emoji => "emoji", |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /// A Short Authentication String (SAS) verification method.
 | /// A Short Authentication String (SAS) verification method.
 | ||||||
| #[derive(Clone, Copy, Debug, PartialEq, Deserialize, Serialize)] | #[derive(Clone, Copy, Debug, Display, EnumString, PartialEq, Deserialize, Serialize)] | ||||||
| pub enum VerificationMethod { | pub enum VerificationMethod { | ||||||
|     /// The *m.sas.v1* verification method.
 |     /// The *m.sas.v1* verification method.
 | ||||||
|     #[serde(rename = "m.sas.v1")] |     #[serde(rename = "m.sas.v1")] | ||||||
|  |     #[strum(serialize = "m.sas.v1")] | ||||||
|     MSasV1, |     MSasV1, | ||||||
| } | } | ||||||
| 
 |  | ||||||
| impl_enum! { |  | ||||||
|     VerificationMethod { |  | ||||||
|         MSasV1 => "m.sas.v1", |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  | |||||||
| @ -1,28 +1,3 @@ | |||||||
| macro_rules! impl_enum { |  | ||||||
|     ($name:ident { $($variant:ident => $s:expr,)+ }) => { |  | ||||||
|         impl ::std::fmt::Display for $name { |  | ||||||
|             fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> Result<(), ::std::fmt::Error> { |  | ||||||
|                 let variant = match *self { |  | ||||||
|                     $($name::$variant => $s,)* |  | ||||||
|                 }; |  | ||||||
| 
 |  | ||||||
|                 write!(f, "{}", variant) |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         impl ::std::str::FromStr for $name { |  | ||||||
|             type Err = $crate::FromStrError; |  | ||||||
| 
 |  | ||||||
|             fn from_str(s: &str) -> Result<Self, Self::Err> { |  | ||||||
|                 match s { |  | ||||||
|                     $($s => Ok($name::$variant),)* |  | ||||||
|                     _ => Err($crate::FromStrError), |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| macro_rules! impl_event { | macro_rules! impl_event { | ||||||
|     ($name:ident, $content_name:ident, $event_type:path) => { |     ($name:ident, $content_name:ident, $event_type:path) => { | ||||||
|         impl crate::Event for $name { |         impl crate::Event for $name { | ||||||
|  | |||||||
| @ -4,6 +4,7 @@ use js_int::UInt; | |||||||
| use ruma_events_macros::ruma_event; | use ruma_events_macros::ruma_event; | ||||||
| use ruma_identifiers::UserId; | use ruma_identifiers::UserId; | ||||||
| use serde::{Deserialize, Serialize}; | use serde::{Deserialize, Serialize}; | ||||||
|  | use strum::{Display, EnumString}; | ||||||
| 
 | 
 | ||||||
| ruma_event! { | ruma_event! { | ||||||
|     /// Informs the client of a user's presence state change.
 |     /// Informs the client of a user's presence state change.
 | ||||||
| @ -42,29 +43,24 @@ ruma_event! { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// A description of a user's connectivity and availability for chat.
 | /// A description of a user's connectivity and availability for chat.
 | ||||||
| #[derive(Clone, Copy, Debug, PartialEq, Deserialize, Serialize)] | #[derive(Clone, Copy, Debug, Display, EnumString, PartialEq, Deserialize, Serialize)] | ||||||
| pub enum PresenceState { | pub enum PresenceState { | ||||||
|     /// Disconnected from the service.
 |     /// Disconnected from the service.
 | ||||||
|     #[serde(rename = "offline")] |     #[serde(rename = "offline")] | ||||||
|  |     #[strum(serialize = "offline")] | ||||||
|     Offline, |     Offline, | ||||||
| 
 | 
 | ||||||
|     /// Connected to the service.
 |     /// Connected to the service.
 | ||||||
|     #[serde(rename = "online")] |     #[serde(rename = "online")] | ||||||
|  |     #[strum(serialize = "online")] | ||||||
|     Online, |     Online, | ||||||
| 
 | 
 | ||||||
|     /// Connected to the service but not available for chat.
 |     /// Connected to the service but not available for chat.
 | ||||||
|     #[serde(rename = "unavailable")] |     #[serde(rename = "unavailable")] | ||||||
|  |     #[strum(serialize = "unavailable")] | ||||||
|     Unavailable, |     Unavailable, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl_enum! { |  | ||||||
|     PresenceState { |  | ||||||
|         Offline => "offline", |  | ||||||
|         Online => "online", |  | ||||||
|         Unavailable => "unavailable", |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #[cfg(test)] | #[cfg(test)] | ||||||
| mod tests { | mod tests { | ||||||
|     use std::convert::TryFrom; |     use std::convert::TryFrom; | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ | |||||||
| 
 | 
 | ||||||
| use ruma_events_macros::ruma_event; | use ruma_events_macros::ruma_event; | ||||||
| use serde::{Deserialize, Serialize}; | use serde::{Deserialize, Serialize}; | ||||||
|  | use strum::{Display, EnumString}; | ||||||
| 
 | 
 | ||||||
| ruma_event! { | ruma_event! { | ||||||
|     /// Controls whether guest users are allowed to join rooms.
 |     /// Controls whether guest users are allowed to join rooms.
 | ||||||
| @ -19,9 +20,10 @@ ruma_event! { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// A policy for guest user access to a room.
 | /// A policy for guest user access to a room.
 | ||||||
| #[derive(Clone, Copy, Debug, PartialEq, Deserialize, Serialize)] | #[derive(Clone, Copy, Debug, Display, EnumString, PartialEq, Deserialize, Serialize)] | ||||||
| #[non_exhaustive] | #[non_exhaustive] | ||||||
| #[serde(rename_all = "snake_case")] | #[serde(rename_all = "snake_case")] | ||||||
|  | #[strum(serialize_all = "snake_case")] | ||||||
| pub enum GuestAccess { | pub enum GuestAccess { | ||||||
|     /// Guests are allowed to join the room.
 |     /// Guests are allowed to join the room.
 | ||||||
|     CanJoin, |     CanJoin, | ||||||
| @ -29,10 +31,3 @@ pub enum GuestAccess { | |||||||
|     /// Guests are not allowed to join the room.
 |     /// Guests are not allowed to join the room.
 | ||||||
|     Forbidden, |     Forbidden, | ||||||
| } | } | ||||||
| 
 |  | ||||||
| impl_enum! { |  | ||||||
|     GuestAccess { |  | ||||||
|         CanJoin => "can_join", |  | ||||||
|         Forbidden => "forbidden", |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ | |||||||
| 
 | 
 | ||||||
| use ruma_events_macros::ruma_event; | use ruma_events_macros::ruma_event; | ||||||
| use serde::{Deserialize, Serialize}; | use serde::{Deserialize, Serialize}; | ||||||
|  | use strum::{Display, EnumString}; | ||||||
| 
 | 
 | ||||||
| ruma_event! { | ruma_event! { | ||||||
|     /// This event controls whether a member of a room can see the events that happened in a room
 |     /// This event controls whether a member of a room can see the events that happened in a room
 | ||||||
| @ -17,8 +18,9 @@ ruma_event! { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// Who can see a room's history.
 | /// Who can see a room's history.
 | ||||||
| #[derive(Clone, Copy, Debug, PartialEq, Deserialize, Serialize)] | #[derive(Clone, Copy, Debug, Display, EnumString, PartialEq, Deserialize, Serialize)] | ||||||
| #[serde(rename_all = "snake_case")] | #[serde(rename_all = "snake_case")] | ||||||
|  | #[strum(serialize_all = "snake_case")] | ||||||
| pub enum HistoryVisibility { | pub enum HistoryVisibility { | ||||||
|     /// Previous events are accessible to newly joined members from the point they were invited
 |     /// Previous events are accessible to newly joined members from the point they were invited
 | ||||||
|     /// onwards. Events stop being accessible when the member's state changes to something other
 |     /// onwards. Events stop being accessible when the member's state changes to something other
 | ||||||
| @ -38,12 +40,3 @@ pub enum HistoryVisibility { | |||||||
|     /// participating homeserver with anyone, regardless of whether they have ever joined the room.
 |     /// participating homeserver with anyone, regardless of whether they have ever joined the room.
 | ||||||
|     WorldReadable, |     WorldReadable, | ||||||
| } | } | ||||||
| 
 |  | ||||||
| impl_enum! { |  | ||||||
|     HistoryVisibility { |  | ||||||
|         Invited => "invited", |  | ||||||
|         Joined => "joined", |  | ||||||
|         Shared => "shared", |  | ||||||
|         WorldReadable => "world_readable", |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ | |||||||
| 
 | 
 | ||||||
| use ruma_events_macros::ruma_event; | use ruma_events_macros::ruma_event; | ||||||
| use serde::{Deserialize, Serialize}; | use serde::{Deserialize, Serialize}; | ||||||
|  | use strum::{Display, EnumString}; | ||||||
| 
 | 
 | ||||||
| ruma_event! { | ruma_event! { | ||||||
|     /// Describes how users are allowed to join the room.
 |     /// Describes how users are allowed to join the room.
 | ||||||
| @ -16,8 +17,9 @@ ruma_event! { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// The rule used for users wishing to join this room.
 | /// The rule used for users wishing to join this room.
 | ||||||
| #[derive(Clone, Copy, Debug, PartialEq, Deserialize, Serialize)] | #[derive(Clone, Copy, Debug, Display, EnumString, PartialEq, Deserialize, Serialize)] | ||||||
| #[serde(rename_all = "lowercase")] | #[serde(rename_all = "lowercase")] | ||||||
|  | #[strum(serialize_all = "lowercase")] | ||||||
| pub enum JoinRule { | pub enum JoinRule { | ||||||
|     /// A user who wishes to join the room must first receive an invite to the room from someone
 |     /// A user who wishes to join the room must first receive an invite to the room from someone
 | ||||||
|     /// already inside of the room.
 |     /// already inside of the room.
 | ||||||
| @ -32,12 +34,3 @@ pub enum JoinRule { | |||||||
|     /// Anyone can join the room without any prior action.
 |     /// Anyone can join the room without any prior action.
 | ||||||
|     Public, |     Public, | ||||||
| } | } | ||||||
| 
 |  | ||||||
| impl_enum! { |  | ||||||
|     JoinRule { |  | ||||||
|         Invite => "invite", |  | ||||||
|         Knock => "knock", |  | ||||||
|         Private => "private", |  | ||||||
|         Public => "public", |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  | |||||||
| @ -5,6 +5,7 @@ use std::collections::BTreeMap; | |||||||
| use ruma_events_macros::ruma_event; | use ruma_events_macros::ruma_event; | ||||||
| use ruma_identifiers::UserId; | use ruma_identifiers::UserId; | ||||||
| use serde::{Deserialize, Serialize}; | use serde::{Deserialize, Serialize}; | ||||||
|  | use strum::{Display, EnumString}; | ||||||
| 
 | 
 | ||||||
| ruma_event! { | ruma_event! { | ||||||
|     /// The current membership state of a user in the room.
 |     /// The current membership state of a user in the room.
 | ||||||
| @ -63,8 +64,9 @@ ruma_event! { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// The membership state of a user.
 | /// The membership state of a user.
 | ||||||
| #[derive(Clone, Copy, Debug, PartialEq, Deserialize, Serialize)] | #[derive(Clone, Copy, Debug, Display, EnumString, PartialEq, Deserialize, Serialize)] | ||||||
| #[serde(rename_all = "lowercase")] | #[serde(rename_all = "lowercase")] | ||||||
|  | #[strum(serialize_all = "lowercase")] | ||||||
| pub enum MembershipState { | pub enum MembershipState { | ||||||
|     /// The user is banned.
 |     /// The user is banned.
 | ||||||
|     Ban, |     Ban, | ||||||
| @ -82,16 +84,6 @@ pub enum MembershipState { | |||||||
|     Leave, |     Leave, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl_enum! { |  | ||||||
|     MembershipState { |  | ||||||
|         Ban => "ban", |  | ||||||
|         Invite => "invite", |  | ||||||
|         Join => "join", |  | ||||||
|         Knock => "knock", |  | ||||||
|         Leave => "leave", |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /// Information about a third party invitation.
 | /// Information about a third party invitation.
 | ||||||
| #[derive(Clone, Debug, Deserialize, Serialize)] | #[derive(Clone, Debug, Deserialize, Serialize)] | ||||||
| pub struct ThirdPartyInvite { | pub struct ThirdPartyInvite { | ||||||
|  | |||||||
| @ -3,6 +3,7 @@ | |||||||
| use ruma_events_macros::ruma_event; | use ruma_events_macros::ruma_event; | ||||||
| use ruma_identifiers::EventId; | use ruma_identifiers::EventId; | ||||||
| use serde::{Deserialize, Serialize}; | use serde::{Deserialize, Serialize}; | ||||||
|  | use strum::{Display, EnumString}; | ||||||
| 
 | 
 | ||||||
| ruma_event! { | ruma_event! { | ||||||
|     /// An acknowledgement of a message.
 |     /// An acknowledgement of a message.
 | ||||||
| @ -24,8 +25,9 @@ ruma_event! { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// A type of feedback.
 | /// A type of feedback.
 | ||||||
| #[derive(Clone, Copy, Debug, PartialEq, Deserialize, Serialize)] | #[derive(Clone, Copy, Debug, Display, EnumString, PartialEq, Deserialize, Serialize)] | ||||||
| #[serde(rename_all = "lowercase")] | #[serde(rename_all = "lowercase")] | ||||||
|  | #[strum(serialize_all = "lowercase")] | ||||||
| pub enum FeedbackType { | pub enum FeedbackType { | ||||||
|     /// Sent when a message is received.
 |     /// Sent when a message is received.
 | ||||||
|     Delivered, |     Delivered, | ||||||
| @ -33,10 +35,3 @@ pub enum FeedbackType { | |||||||
|     /// Sent when a message has been observed by the end user.
 |     /// Sent when a message has been observed by the end user.
 | ||||||
|     Read, |     Read, | ||||||
| } | } | ||||||
| 
 |  | ||||||
| impl_enum! { |  | ||||||
|     FeedbackType { |  | ||||||
|         Delivered => "delivered", |  | ||||||
|         Read => "read", |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  | |||||||
| @ -3,6 +3,7 @@ | |||||||
| use ruma_events_macros::ruma_event; | use ruma_events_macros::ruma_event; | ||||||
| use ruma_identifiers::{DeviceId, RoomId}; | use ruma_identifiers::{DeviceId, RoomId}; | ||||||
| use serde::{Deserialize, Serialize}; | use serde::{Deserialize, Serialize}; | ||||||
|  | use strum::{Display, EnumString}; | ||||||
| 
 | 
 | ||||||
| use super::Algorithm; | use super::Algorithm; | ||||||
| 
 | 
 | ||||||
| @ -35,24 +36,19 @@ ruma_event! { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// A new key request or a cancellation of a previous request.
 | /// A new key request or a cancellation of a previous request.
 | ||||||
| #[derive(Clone, Copy, Debug, PartialEq, Deserialize, Serialize)] | #[derive(Clone, Copy, Debug, Display, EnumString, PartialEq, Deserialize, Serialize)] | ||||||
| pub enum Action { | pub enum Action { | ||||||
|     /// Request a key.
 |     /// Request a key.
 | ||||||
|     #[serde(rename = "request")] |     #[serde(rename = "request")] | ||||||
|  |     #[strum(serialize = "request")] | ||||||
|     Request, |     Request, | ||||||
| 
 | 
 | ||||||
|     /// Cancel a request for a key.
 |     /// Cancel a request for a key.
 | ||||||
|     #[serde(rename = "request_cancellation")] |     #[serde(rename = "request_cancellation")] | ||||||
|  |     #[strum(serialize = "request_cancellation")] | ||||||
|     CancelRequest, |     CancelRequest, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl_enum! { |  | ||||||
|     Action { |  | ||||||
|         Request => "request", |  | ||||||
|         CancelRequest => "cancel_request", |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /// Information about a requested key.
 | /// Information about a requested key.
 | ||||||
| #[derive(Clone, Debug, Deserialize, Serialize)] | #[derive(Clone, Debug, Deserialize, Serialize)] | ||||||
| pub struct RequestedKeyInfo { | pub struct RequestedKeyInfo { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user