common: Derive Debug via StringEnum derive
This commit is contained in:
parent
625d5a0782
commit
b859d9c8b0
@ -45,7 +45,7 @@ impl IdentityServerInfo {
|
||||
|
||||
/// Possible values for deleting or unbinding 3PIDs.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, StringEnum)]
|
||||
#[derive(Clone, StringEnum)]
|
||||
#[ruma_enum(rename_all = "kebab-case")]
|
||||
#[non_exhaustive]
|
||||
pub enum ThirdPartyIdRemovalStatus {
|
||||
|
@ -199,7 +199,7 @@ impl Default for RoomVersionsCapability {
|
||||
|
||||
/// The stability of a room version.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "lowercase")]
|
||||
#[non_exhaustive]
|
||||
pub enum RoomVersionStability {
|
||||
|
@ -16,7 +16,7 @@ pub use self::{lazy_load::LazyLoadOptions, url::UrlFilter};
|
||||
|
||||
/// Format to use for returned events.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, Default, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, Default, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum EventFormat {
|
||||
|
@ -106,7 +106,7 @@ pub mod v3 {
|
||||
|
||||
/// Error code for signed key processing failures.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
#[ruma_enum(rename_all = "M_MATRIX_ERROR_CASE")]
|
||||
pub enum FailureErrorCode {
|
||||
|
@ -145,7 +145,7 @@ pub mod v3 {
|
||||
|
||||
/// The desired resizing method.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, StringEnum)]
|
||||
#[derive(Clone, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum Method {
|
||||
|
@ -82,7 +82,7 @@ pub mod v3 {
|
||||
|
||||
/// The kind of membership events to filter for.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "lowercase")]
|
||||
#[non_exhaustive]
|
||||
pub enum MembershipEventFilter {
|
||||
|
@ -301,7 +301,7 @@ pub struct CustomPusherData {
|
||||
|
||||
/// The scope of a push rule.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "lowercase")]
|
||||
#[non_exhaustive]
|
||||
pub enum RuleScope {
|
||||
|
@ -81,7 +81,7 @@ pub mod v3 {
|
||||
|
||||
/// The type of receipt.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialOrdAsRefStr, OrdAsRefStr, PartialEqAsRefStr, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialOrdAsRefStr, OrdAsRefStr, PartialEqAsRefStr, Eq, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
pub enum ReceiptType {
|
||||
/// A [public read receipt].
|
||||
|
@ -14,7 +14,7 @@ use crate::PrivOwnedStr;
|
||||
|
||||
/// Whether or not a newly created room will be listed in the room directory.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, Default, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, Default, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum Visibility {
|
||||
|
@ -184,7 +184,7 @@ pub mod v3 {
|
||||
|
||||
/// A convenience parameter for setting a few default state events.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum RoomPreset {
|
||||
|
@ -250,7 +250,7 @@ pub mod v3 {
|
||||
|
||||
/// The key within events to use for this grouping.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum GroupingKey {
|
||||
@ -287,7 +287,7 @@ pub mod v3 {
|
||||
|
||||
/// The keys to search for.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
pub enum SearchKeys {
|
||||
/// content.body
|
||||
@ -308,7 +308,7 @@ pub mod v3 {
|
||||
|
||||
/// The order in which to search for results.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
pub enum OrderBy {
|
||||
|
@ -202,7 +202,7 @@ pub mod v3 {
|
||||
///
|
||||
/// [matrix-spec-proposals]: https://github.com/matrix-org/matrix-spec-proposals/blob/v1.1/informal/idp-brands.md
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||
pub enum IdentityProviderBrand {
|
||||
/// The [Apple] brand.
|
||||
|
@ -142,7 +142,7 @@ impl From<SpaceHierarchyRoomsChunkInit> for SpaceHierarchyRoomsChunk {
|
||||
/// enum does not hold the conditions for joining restricted rooms. Instead, the server is assumed
|
||||
/// to only return rooms the user is allowed to join in a space hierarchy listing response.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, Default, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, Default, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||
pub enum SpaceRoomJoinRule {
|
||||
|
@ -88,7 +88,7 @@ pub mod v1 {
|
||||
|
||||
/// Which threads to include in the response.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[derive(Clone, Default, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[ruma_enum(rename_all = "lowercase")]
|
||||
#[non_exhaustive]
|
||||
pub enum IncludeThreads {
|
||||
|
@ -221,7 +221,7 @@ impl<'de> Deserialize<'de> for AuthData {
|
||||
|
||||
/// The type of an authentication stage.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
pub enum AuthType {
|
||||
/// Password-based authentication (`m.login.password`).
|
||||
|
@ -57,6 +57,7 @@ Breaking changes:
|
||||
* Instead, use `.deserialize_as::<T>()` or `.cast_ref::<T>().deserialize_with_type()`
|
||||
* Remove `EventContent::from_parts`
|
||||
* Replace it with `EventContentFromType::from_parts`
|
||||
* The `serde::StringEnum` derive now also generates a `Debug` implementation
|
||||
|
||||
Improvements:
|
||||
|
||||
|
@ -4,7 +4,7 @@ use crate::{serde::StringEnum, PrivOwnedStr};
|
||||
|
||||
/// Access token types.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
pub enum TokenType {
|
||||
/// Bearer token type
|
||||
|
@ -155,7 +155,7 @@ pub enum RoomNetwork {
|
||||
|
||||
/// The rule used for users wishing to join a public room.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, Default, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, Default, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||
pub enum PublicRoomJoinRule {
|
||||
|
@ -156,7 +156,7 @@ impl CrossSigningKey {
|
||||
|
||||
/// The usage of a cross signing key.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, StringEnum)]
|
||||
#[derive(Clone, StringEnum)]
|
||||
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
pub enum KeyUsage {
|
||||
|
@ -50,7 +50,7 @@ impl SessionDescription {
|
||||
///
|
||||
/// [`RTCSdpType`]: (https://www.w3.org/TR/webrtc/#dom-rtcsdptype):
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "lowercase")]
|
||||
#[non_exhaustive]
|
||||
pub enum SessionDescriptionType {
|
||||
|
@ -85,7 +85,7 @@ impl CallHangupEventContent {
|
||||
/// 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.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[cfg_attr(feature = "unstable-msc2746", derive(Default))]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
|
@ -20,7 +20,7 @@ pub mod start;
|
||||
|
||||
/// A hash algorithm.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum HashAlgorithm {
|
||||
@ -33,7 +33,7 @@ pub enum HashAlgorithm {
|
||||
|
||||
/// A key agreement protocol.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "kebab-case")]
|
||||
#[non_exhaustive]
|
||||
pub enum KeyAgreementProtocol {
|
||||
@ -49,7 +49,7 @@ pub enum KeyAgreementProtocol {
|
||||
|
||||
/// A message authentication code algorithm.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "kebab-case")]
|
||||
#[non_exhaustive]
|
||||
pub enum MessageAuthenticationCode {
|
||||
@ -70,7 +70,7 @@ pub enum MessageAuthenticationCode {
|
||||
|
||||
/// A Short Authentication String method.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum ShortAuthenticationString {
|
||||
@ -86,7 +86,7 @@ pub enum ShortAuthenticationString {
|
||||
|
||||
/// A Short Authentication String (SAS) verification method.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
pub enum VerificationMethod {
|
||||
/// The `m.sas.v1` verification method.
|
||||
|
@ -66,7 +66,7 @@ impl KeyVerificationCancelEventContent {
|
||||
/// Custom error codes should use the Java package naming convention.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
// FIXME: Add `m.foo_bar` as a naming scheme in StringEnum and remove rename attributes.
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
pub enum CancelCode {
|
||||
/// The user cancelled the verification.
|
||||
|
@ -157,7 +157,7 @@ impl AssetContent {
|
||||
|
||||
/// The type of an asset.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[derive(Clone, Default, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
pub enum AssetType {
|
||||
/// The asset is the sender of the event.
|
||||
|
@ -56,7 +56,7 @@ pub struct PossiblyRedactedPolicyRuleEventContent {
|
||||
|
||||
/// The possible actions that can be taken.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
pub enum Recommendation {
|
||||
/// Entities affected by the rule should be banned from participation where possible.
|
||||
|
@ -74,7 +74,7 @@ impl PollStartContent {
|
||||
|
||||
/// The kind of poll.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, Default, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, Default, PartialEq, Eq, StringEnum)]
|
||||
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||
pub enum PollKind {
|
||||
/// The results are revealed once the poll is closed.
|
||||
|
@ -59,7 +59,7 @@ pub type Receipts = BTreeMap<ReceiptType, UserReceipts>;
|
||||
|
||||
/// The type of receipt.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialOrdAsRefStr, OrdAsRefStr, PartialEqAsRefStr, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialOrdAsRefStr, OrdAsRefStr, PartialEqAsRefStr, Eq, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
pub enum ReceiptType {
|
||||
/// A [public read receipt].
|
||||
|
@ -93,7 +93,7 @@ impl BundledAnnotation {
|
||||
|
||||
/// Type of annotation.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[cfg(feature = "unstable-msc2677")]
|
||||
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||
pub enum AnnotationType {
|
||||
@ -333,7 +333,7 @@ impl BundledRelations {
|
||||
|
||||
/// Relation types as defined in `rel_type` of an `m.relates_to` field.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "m.snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum RelationType {
|
||||
|
@ -50,7 +50,7 @@ impl SyncRoomGuestAccessEvent {
|
||||
|
||||
/// A policy for guest user access to a room.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum GuestAccess {
|
||||
|
@ -49,7 +49,7 @@ impl SyncRoomHistoryVisibilityEvent {
|
||||
|
||||
/// Who can see a room's history.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum HistoryVisibility {
|
||||
|
@ -272,7 +272,7 @@ impl SyncRoomMemberEvent {
|
||||
|
||||
/// The membership state of a user.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "lowercase")]
|
||||
#[non_exhaustive]
|
||||
pub enum MembershipState {
|
||||
|
@ -595,7 +595,7 @@ pub enum Relation<C> {
|
||||
|
||||
/// The format for the formatted representation of a message body.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
pub enum MessageFormat {
|
||||
/// HTML.
|
||||
|
@ -35,7 +35,7 @@ impl ServerNoticeMessageEventContent {
|
||||
|
||||
/// Types of server notices.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
pub enum ServerNoticeType {
|
||||
/// The server has exceeded some limit which requires the server administrator to intervene.
|
||||
@ -48,7 +48,7 @@ pub enum ServerNoticeType {
|
||||
|
||||
/// Types of usage limits.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum LimitType {
|
||||
|
@ -48,7 +48,7 @@ impl ToDeviceRoomKeyRequestEventContent {
|
||||
|
||||
/// A new key request or a cancellation of a previous request.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum Action {
|
||||
|
@ -109,7 +109,7 @@ impl TryFrom<RequestActionJsonRepr> for RequestAction {
|
||||
|
||||
/// The name of a secret.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||
pub enum SecretName {
|
||||
/// Cross-signing master key (m.cross_signing.master).
|
||||
|
@ -6,7 +6,7 @@ use crate::PrivOwnedStr;
|
||||
|
||||
/// The basic key algorithms in the specification.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
pub enum DeviceKeyAlgorithm {
|
||||
@ -25,7 +25,7 @@ pub enum DeviceKeyAlgorithm {
|
||||
|
||||
/// The signing key algorithms defined in the Matrix spec.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
pub enum SigningKeyAlgorithm {
|
||||
@ -38,7 +38,7 @@ pub enum SigningKeyAlgorithm {
|
||||
|
||||
/// An encryption algorithm to be used to encrypt messages sent to a room.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
pub enum EventEncryptionAlgorithm {
|
||||
/// Olm version 1 using Curve25519, AES-256, and SHA-256.
|
||||
@ -55,7 +55,7 @@ pub enum EventEncryptionAlgorithm {
|
||||
|
||||
/// A key algorithm to be used to generate a key from a passphrase.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
pub enum KeyDerivationAlgorithm {
|
||||
/// PBKDF2
|
||||
|
@ -6,7 +6,7 @@ use crate::{serde::StringEnum, PrivOwnedStr};
|
||||
|
||||
/// A description of a user's connectivity and availability for chat.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, Default, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, Default, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum PresenceState {
|
||||
|
@ -663,7 +663,7 @@ impl HttpPusherData {
|
||||
///
|
||||
/// [spec]: https://spec.matrix.org/v1.4/push-gateway-api/#homeserver-behaviour
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum PushFormat {
|
||||
@ -676,7 +676,7 @@ pub enum PushFormat {
|
||||
|
||||
/// The kinds of push rules that are available.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum RuleKind {
|
||||
|
@ -21,7 +21,7 @@ pub use room_member_count_is::{ComparisonOperator, RoomMemberCountIs};
|
||||
/// Features supported by room versions.
|
||||
#[cfg(feature = "unstable-msc3931")]
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||
pub enum RoomVersionFeature {
|
||||
/// m.extensible_events
|
||||
|
@ -371,7 +371,7 @@ pub enum PredefinedRuleId {
|
||||
|
||||
/// The rule IDs of the predefined override server push rules.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[ruma_enum(rename_all = ".m.rule.snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum PredefinedOverrideRuleId {
|
||||
@ -411,7 +411,7 @@ pub enum PredefinedOverrideRuleId {
|
||||
|
||||
/// The rule IDs of the predefined underride server push rules.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[ruma_enum(rename_all = ".m.rule.snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum PredefinedUnderrideRuleId {
|
||||
@ -452,7 +452,7 @@ pub enum PredefinedUnderrideRuleId {
|
||||
|
||||
/// The rule IDs of the predefined content server push rules.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
||||
#[ruma_enum(rename_all = ".m.rule.snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum PredefinedContentRuleId {
|
||||
|
@ -4,7 +4,7 @@ use crate::{serde::StringEnum, PrivOwnedStr};
|
||||
|
||||
/// An enum of possible room types.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
pub enum RoomType {
|
||||
/// Defines the room as a space.
|
||||
|
@ -220,7 +220,7 @@ impl User {
|
||||
|
||||
/// The medium of a third party identifier.
|
||||
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "lowercase")]
|
||||
#[non_exhaustive]
|
||||
pub enum Medium {
|
||||
|
@ -4,7 +4,7 @@ use serde_json::{from_value as from_json_value, json, to_value as to_json_value}
|
||||
#[derive(Debug, PartialEq)]
|
||||
struct PrivOwnedStr(Box<str>);
|
||||
|
||||
#[derive(Debug, PartialEq, StringEnum)]
|
||||
#[derive(PartialEq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
enum MyEnum {
|
||||
First,
|
||||
@ -37,6 +37,19 @@ fn display() {
|
||||
assert_eq!(MyEnum::_Custom(PrivOwnedStr("HelloWorld".into())).to_string(), "HelloWorld");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn debug() {
|
||||
assert_eq!(format!("{:?}", MyEnum::First), "\"first\"");
|
||||
assert_eq!(format!("{:?}", MyEnum::Second), "\"second\"");
|
||||
assert_eq!(format!("{:?}", MyEnum::Third), "\"m.third\"");
|
||||
assert_eq!(format!("{:?}", MyEnum::HelloWorld), "\"hello_world\"");
|
||||
assert_eq!(format!("{:?}", MyEnum::Stable), "\"io.ruma.unstable\"");
|
||||
assert_eq!(
|
||||
format!("{:?}", MyEnum::_Custom(PrivOwnedStr("HelloWorld".into()))),
|
||||
"\"HelloWorld\""
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn from_string() {
|
||||
assert_eq!(MyEnum::from("first"), MyEnum::First);
|
||||
|
@ -86,7 +86,7 @@ pub mod v1 {
|
||||
/// string with `::from() / .into()`. To check for values that are not available as a
|
||||
/// documented variant here, use its string representation, obtained through
|
||||
/// [`.as_str()`](Self::as_str()).
|
||||
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
pub enum ProfileField {
|
||||
/// Display name of the user.
|
||||
|
@ -13,7 +13,7 @@ pub mod lookup_3pid;
|
||||
/// This type can hold an arbitrary string. To build this with a custom value, convert it from a
|
||||
/// string with `::from() / .into()`. To check for values that are not available as a documented
|
||||
/// variant here, use its string representation, obtained through [`.as_str()`](Self::as_str()).
|
||||
#[derive(Debug, PartialEq, Eq, Clone, StringEnum)]
|
||||
#[derive(Clone, PartialEq, Eq, StringEnum)]
|
||||
#[non_exhaustive]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
pub enum IdentifierHashingAlgorithm {
|
||||
|
@ -338,8 +338,8 @@ pub fn derive_partial_eq_as_ref_str(input: TokenStream) -> TokenStream {
|
||||
expand_partial_eq_as_ref_str(&input.ident).unwrap_or_else(syn::Error::into_compile_error).into()
|
||||
}
|
||||
|
||||
/// Shorthand for the derives `AsRefStr`, `FromString`, `DisplayAsRefStr`, `SerializeAsRefStr` and
|
||||
/// `DeserializeFromCowStr`.
|
||||
/// Shorthand for the derives `AsRefStr`, `FromString`, `DisplayAsRefStr`, `DebugAsRefStr`,
|
||||
/// `SerializeAsRefStr` and `DeserializeFromCowStr`.
|
||||
#[proc_macro_derive(StringEnum, attributes(ruma_enum))]
|
||||
pub fn derive_string_enum(input: TokenStream) -> TokenStream {
|
||||
fn expand_all(input: ItemEnum) -> syn::Result<proc_macro2::TokenStream> {
|
||||
@ -347,6 +347,7 @@ pub fn derive_string_enum(input: TokenStream) -> TokenStream {
|
||||
let from_string_impl = expand_enum_from_string(&input)?;
|
||||
let as_str_impl = expand_as_str_as_ref_str(&input.ident)?;
|
||||
let display_impl = expand_display_as_ref_str(&input.ident)?;
|
||||
let debug_impl = expand_debug_as_ref_str(&input.ident)?;
|
||||
let serialize_impl = expand_serialize_as_ref_str(&input.ident)?;
|
||||
let deserialize_impl = expand_deserialize_from_cow_str(&input.ident)?;
|
||||
|
||||
@ -355,6 +356,7 @@ pub fn derive_string_enum(input: TokenStream) -> TokenStream {
|
||||
#from_string_impl
|
||||
#as_str_impl
|
||||
#display_impl
|
||||
#debug_impl
|
||||
#serialize_impl
|
||||
#deserialize_impl
|
||||
})
|
||||
|
@ -149,7 +149,7 @@ pub mod v1 {
|
||||
/// This type can hold an arbitrary string. To build this with a custom value, convert it from a
|
||||
/// string with `::from() / .into()`. To check for values that are not available as a
|
||||
/// documented variant here, use its string representation, obtained through `.as_str()`.
|
||||
#[derive(Clone, Debug, Default, PartialEq, Eq, StringEnum)]
|
||||
#[derive(Clone, Default, PartialEq, Eq, StringEnum)]
|
||||
#[ruma_enum(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum NotificationPriority {
|
||||
|
Loading…
x
Reference in New Issue
Block a user