events: Expand trait_aliases! macro
This commit is contained in:
parent
6393433882
commit
2579544883
@ -136,43 +136,36 @@ pub enum EventKind {
|
|||||||
Presence,
|
Presence,
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! trait_aliases {
|
/// An alias for `EventContent<EventType = GlobalAccountDataEventType>`.
|
||||||
// need to use `,` instead of `+` because (1) path can't be followed by `+`
|
pub trait GlobalAccountDataEventContent:
|
||||||
// and (2) `+` can't be used as a separator since it's a repetition operator
|
EventContent<EventType = GlobalAccountDataEventType>
|
||||||
($(
|
{
|
||||||
$( #[doc = $docs:literal] )*
|
|
||||||
trait $id:ident = $( $def:path ),+;
|
|
||||||
)*) => {
|
|
||||||
$(
|
|
||||||
$( #[doc = $docs] )*
|
|
||||||
pub trait $id: $($def+)+ {}
|
|
||||||
impl<T: $($def+)+> $id for T {}
|
|
||||||
)*
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
impl<T: EventContent<EventType = GlobalAccountDataEventType>> GlobalAccountDataEventContent for T {}
|
||||||
|
|
||||||
trait_aliases! {
|
/// An alias for `EventContent<EventType = RoomAccountDataEventType>`.
|
||||||
/// An alias for `EventContent<EventType = GlobalAccountDataEventType>`.
|
pub trait RoomAccountDataEventContent: EventContent<EventType = RoomAccountDataEventType> {}
|
||||||
trait GlobalAccountDataEventContent = EventContent<EventType = GlobalAccountDataEventType>;
|
impl<T: EventContent<EventType = RoomAccountDataEventType>> RoomAccountDataEventContent for T {}
|
||||||
|
|
||||||
/// An alias for `EventContent<EventType = RoomAccountDataEventType>`.
|
/// An alias for `EventContent<EventType = EphemeralRoomEventType>`.
|
||||||
trait RoomAccountDataEventContent = EventContent<EventType = RoomAccountDataEventType>;
|
pub trait EphemeralRoomEventContent: EventContent<EventType = EphemeralRoomEventType> {}
|
||||||
|
impl<T: EventContent<EventType = EphemeralRoomEventType>> EphemeralRoomEventContent for T {}
|
||||||
|
|
||||||
/// An alias for `EventContent<EventType = EphemeralRoomEventType>`.
|
/// An alias for `EventContent<EventType = MessageLikeEventType>`.
|
||||||
trait EphemeralRoomEventContent = EventContent<EventType = EphemeralRoomEventType>;
|
pub trait MessageLikeEventContent: EventContent<EventType = MessageLikeEventType> {}
|
||||||
|
impl<T: EventContent<EventType = MessageLikeEventType>> MessageLikeEventContent for T {}
|
||||||
|
|
||||||
/// An alias for `EventContent<EventType = MessageLikeEventType>`.
|
/// An alias for `MessageLikeEventContent + RedactedEventContent`.
|
||||||
trait MessageLikeEventContent = EventContent<EventType = MessageLikeEventType>;
|
pub trait RedactedMessageLikeEventContent: MessageLikeEventContent + RedactedEventContent {}
|
||||||
|
impl<T: MessageLikeEventContent + RedactedEventContent> RedactedMessageLikeEventContent for T {}
|
||||||
|
|
||||||
/// An alias for `MessageLikeEventContent + RedactedEventContent`.
|
/// An alias for `StateEventContent + RedactedEventContent`.
|
||||||
trait RedactedMessageLikeEventContent = MessageLikeEventContent, RedactedEventContent;
|
pub trait RedactedStateEventContent: StateEventContent + RedactedEventContent {}
|
||||||
|
impl<T: StateEventContent + RedactedEventContent> RedactedStateEventContent for T {}
|
||||||
|
|
||||||
/// An alias for `StateEventContent + RedactedEventContent`.
|
/// An alias for `EventContent<EventType = ToDeviceEventType>`.
|
||||||
trait RedactedStateEventContent = StateEventContent, RedactedEventContent;
|
pub trait ToDeviceEventContent: EventContent<EventType = ToDeviceEventType> {}
|
||||||
|
impl<T: EventContent<EventType = ToDeviceEventType>> ToDeviceEventContent for T {}
|
||||||
/// An alias for `EventContent<EventType = ToDeviceEventType>`.
|
|
||||||
trait ToDeviceEventContent = EventContent<EventType = ToDeviceEventType>;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// An alias for `EventContent<EventType = StateEventType>`.
|
/// An alias for `EventContent<EventType = StateEventType>`.
|
||||||
pub trait StateEventContent: EventContent<EventType = StateEventType> {
|
pub trait StateEventContent: EventContent<EventType = StateEventType> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user