events: Reintroduce *EventContent as trait aliases
This commit is contained in:
parent
9f56e6e497
commit
5ec3ad2290
@ -7,7 +7,10 @@ pub mod v3 {
|
|||||||
|
|
||||||
use ruma_common::{
|
use ruma_common::{
|
||||||
api::ruma_api,
|
api::ruma_api,
|
||||||
events::{AnyGlobalAccountDataEventContent, EventContent, GlobalAccountDataEventType},
|
events::{
|
||||||
|
AnyGlobalAccountDataEventContent, GlobalAccountDataEventContent,
|
||||||
|
GlobalAccountDataEventType,
|
||||||
|
},
|
||||||
serde::Raw,
|
serde::Raw,
|
||||||
UserId,
|
UserId,
|
||||||
};
|
};
|
||||||
@ -60,7 +63,7 @@ pub mod v3 {
|
|||||||
/// `T`s [`Serialize`][serde::Serialize] implementation can fail.
|
/// `T`s [`Serialize`][serde::Serialize] implementation can fail.
|
||||||
pub fn new<T>(data: &'a T, user_id: &'a UserId) -> serde_json::Result<Self>
|
pub fn new<T>(data: &'a T, user_id: &'a UserId) -> serde_json::Result<Self>
|
||||||
where
|
where
|
||||||
T: EventContent<EventType = GlobalAccountDataEventType>,
|
T: GlobalAccountDataEventContent,
|
||||||
{
|
{
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
user_id,
|
user_id,
|
||||||
|
@ -7,7 +7,9 @@ pub mod v3 {
|
|||||||
|
|
||||||
use ruma_common::{
|
use ruma_common::{
|
||||||
api::ruma_api,
|
api::ruma_api,
|
||||||
events::{AnyRoomAccountDataEventContent, EventContent, RoomAccountDataEventType},
|
events::{
|
||||||
|
AnyRoomAccountDataEventContent, RoomAccountDataEventContent, RoomAccountDataEventType,
|
||||||
|
},
|
||||||
serde::Raw,
|
serde::Raw,
|
||||||
RoomId, UserId,
|
RoomId, UserId,
|
||||||
};
|
};
|
||||||
@ -68,7 +70,7 @@ pub mod v3 {
|
|||||||
user_id: &'a UserId,
|
user_id: &'a UserId,
|
||||||
) -> serde_json::Result<Self>
|
) -> serde_json::Result<Self>
|
||||||
where
|
where
|
||||||
T: EventContent<EventType = RoomAccountDataEventType>,
|
T: RoomAccountDataEventContent,
|
||||||
{
|
{
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
data: Raw::from_json(to_raw_json_value(data)?),
|
data: Raw::from_json(to_raw_json_value(data)?),
|
||||||
|
@ -7,7 +7,7 @@ pub mod v3 {
|
|||||||
|
|
||||||
use ruma_common::{
|
use ruma_common::{
|
||||||
api::ruma_api,
|
api::ruma_api,
|
||||||
events::{AnyMessageLikeEventContent, EventContent, MessageLikeEventType},
|
events::{AnyMessageLikeEventContent, MessageLikeEventContent, MessageLikeEventType},
|
||||||
serde::Raw,
|
serde::Raw,
|
||||||
EventId, RoomId, TransactionId,
|
EventId, RoomId, TransactionId,
|
||||||
};
|
};
|
||||||
@ -68,7 +68,7 @@ pub mod v3 {
|
|||||||
content: &'a T,
|
content: &'a T,
|
||||||
) -> serde_json::Result<Self>
|
) -> serde_json::Result<Self>
|
||||||
where
|
where
|
||||||
T: EventContent<EventType = MessageLikeEventType>,
|
T: MessageLikeEventContent,
|
||||||
{
|
{
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
room_id,
|
room_id,
|
||||||
|
@ -7,7 +7,7 @@ pub mod v3 {
|
|||||||
|
|
||||||
use ruma_common::{
|
use ruma_common::{
|
||||||
api::ruma_api,
|
api::ruma_api,
|
||||||
events::{AnyStateEventContent, EventContent, StateEventType},
|
events::{AnyStateEventContent, StateEventContent, StateEventType},
|
||||||
serde::{Incoming, Raw},
|
serde::{Incoming, Raw},
|
||||||
EventId, RoomId,
|
EventId, RoomId,
|
||||||
};
|
};
|
||||||
@ -66,7 +66,7 @@ pub mod v3 {
|
|||||||
content: &'a T,
|
content: &'a T,
|
||||||
) -> serde_json::Result<Self>
|
) -> serde_json::Result<Self>
|
||||||
where
|
where
|
||||||
T: EventContent<EventType = StateEventType>,
|
T: StateEventContent,
|
||||||
{
|
{
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
room_id,
|
room_id,
|
||||||
|
@ -5,6 +5,11 @@ use serde_json::value::RawValue as RawJsonValue;
|
|||||||
|
|
||||||
use crate::serde::Raw;
|
use crate::serde::Raw;
|
||||||
|
|
||||||
|
use super::{
|
||||||
|
EphemeralRoomEventType, GlobalAccountDataEventType, MessageLikeEventType,
|
||||||
|
RoomAccountDataEventType, StateEventType, ToDeviceEventType,
|
||||||
|
};
|
||||||
|
|
||||||
/// The base trait that all event content types implement.
|
/// The base trait that all event content types implement.
|
||||||
///
|
///
|
||||||
/// Use [`macros::EventContent`] to derive this traits. It is not meant to be implemented manually.
|
/// Use [`macros::EventContent`] to derive this traits. It is not meant to be implemented manually.
|
||||||
@ -128,3 +133,46 @@ pub enum EventKind {
|
|||||||
/// Presence event kind.
|
/// Presence event kind.
|
||||||
Presence,
|
Presence,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! trait_aliases {
|
||||||
|
// need to use `,` instead of `+` because (1) path can't be followed by `+`
|
||||||
|
// and (2) `+` can't be used as a separator since it's a repetition operator
|
||||||
|
($(
|
||||||
|
$( #[doc = $docs:literal] )*
|
||||||
|
trait $id:ident = $( $def:path ),+;
|
||||||
|
)*) => {
|
||||||
|
$(
|
||||||
|
$( #[doc = $docs] )*
|
||||||
|
pub trait $id: $($def+)+ {}
|
||||||
|
impl<T: $($def+)+> $id for T {}
|
||||||
|
)*
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
trait_aliases! {
|
||||||
|
/// An alias for `EventContent<EventType = GlobalAccountDataEventType>`.
|
||||||
|
trait GlobalAccountDataEventContent = EventContent<EventType = GlobalAccountDataEventType>;
|
||||||
|
|
||||||
|
/// An alias for `EventContent<EventType = RoomAccountDataEventType>`.
|
||||||
|
trait RoomAccountDataEventContent = EventContent<EventType = RoomAccountDataEventType>;
|
||||||
|
|
||||||
|
/// An alias for `EventContent<EventType = EphemeralRoomEventType>`.
|
||||||
|
trait EphemeralRoomEventContent = EventContent<EventType = EphemeralRoomEventType>;
|
||||||
|
|
||||||
|
/// An alias for `EventContent<EventType = MessageLikeEventType>`.
|
||||||
|
trait MessageLikeEventContent = EventContent<EventType = MessageLikeEventType>;
|
||||||
|
|
||||||
|
/// An alias for `EventContent<EventType = MessageLikeEventType> + RedactedEventContent`.
|
||||||
|
trait RedactedMessageLikeEventContent =
|
||||||
|
EventContent<EventType = MessageLikeEventType>, RedactedEventContent;
|
||||||
|
|
||||||
|
/// An alias for `EventContent<EventType = StateEventType>`.
|
||||||
|
trait StateEventContent = EventContent<EventType = StateEventType>;
|
||||||
|
|
||||||
|
/// An alias for `EventContent<EventType = StateEventType> + RedactedEventContent`.
|
||||||
|
trait RedactedStateEventContent =
|
||||||
|
EventContent<EventType = StateEventType>, RedactedEventContent;
|
||||||
|
|
||||||
|
/// An alias for `EventContent<EventType = ToDeviceEventType>`.
|
||||||
|
trait ToDeviceEventContent = EventContent<EventType = ToDeviceEventType>;
|
||||||
|
}
|
||||||
|
@ -4,29 +4,30 @@ use ruma_macros::Event;
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
EphemeralRoomEventType, EventContent, GlobalAccountDataEventType, MessageLikeEventType,
|
EphemeralRoomEventContent, GlobalAccountDataEventContent, MessageLikeEventContent,
|
||||||
MessageLikeUnsigned, RedactedEventContent, RedactedUnsigned, RoomAccountDataEventType,
|
MessageLikeEventType, MessageLikeUnsigned, RedactedMessageLikeEventContent,
|
||||||
StateEventType, StateUnsigned, ToDeviceEventType,
|
RedactedStateEventContent, RedactedUnsigned, RoomAccountDataEventContent, StateEventContent,
|
||||||
|
StateEventType, StateUnsigned, ToDeviceEventContent,
|
||||||
};
|
};
|
||||||
use crate::{EventId, MilliSecondsSinceUnixEpoch, RoomId, UserId};
|
use crate::{EventId, MilliSecondsSinceUnixEpoch, RoomId, UserId};
|
||||||
|
|
||||||
/// A global account data event.
|
/// A global account data event.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct GlobalAccountDataEvent<C: EventContent<EventType = GlobalAccountDataEventType>> {
|
pub struct GlobalAccountDataEvent<C: GlobalAccountDataEventContent> {
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A room account data event.
|
/// A room account data event.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct RoomAccountDataEvent<C: EventContent<EventType = RoomAccountDataEventType>> {
|
pub struct RoomAccountDataEvent<C: RoomAccountDataEventContent> {
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// An ephemeral room event.
|
/// An ephemeral room event.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct EphemeralRoomEvent<C: EventContent<EventType = EphemeralRoomEventType>> {
|
pub struct EphemeralRoomEvent<C: EphemeralRoomEventContent> {
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
|
|
||||||
@ -36,7 +37,7 @@ pub struct EphemeralRoomEvent<C: EventContent<EventType = EphemeralRoomEventType
|
|||||||
|
|
||||||
/// An ephemeral room event without a `room_id`.
|
/// An ephemeral room event without a `room_id`.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct SyncEphemeralRoomEvent<C: EventContent<EventType = EphemeralRoomEventType>> {
|
pub struct SyncEphemeralRoomEvent<C: EphemeralRoomEventContent> {
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
}
|
}
|
||||||
@ -46,7 +47,7 @@ pub struct SyncEphemeralRoomEvent<C: EventContent<EventType = EphemeralRoomEvent
|
|||||||
/// `MessageLikeEvent` implements the comparison traits using only the `event_id` field, a sorted
|
/// `MessageLikeEvent` implements the comparison traits using only the `event_id` field, a sorted
|
||||||
/// list would be sorted lexicographically based on the event's `EventId`.
|
/// list would be sorted lexicographically based on the event's `EventId`.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct MessageLikeEvent<C: EventContent<EventType = MessageLikeEventType>> {
|
pub struct MessageLikeEvent<C: MessageLikeEventContent> {
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
|
|
||||||
@ -71,7 +72,7 @@ pub struct MessageLikeEvent<C: EventContent<EventType = MessageLikeEventType>> {
|
|||||||
/// `SyncMessageLikeEvent` implements the comparison traits using only the `event_id` field, a
|
/// `SyncMessageLikeEvent` implements the comparison traits using only the `event_id` field, a
|
||||||
/// sorted list would be sorted lexicographically based on the event's `EventId`.
|
/// sorted list would be sorted lexicographically based on the event's `EventId`.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct SyncMessageLikeEvent<C: EventContent<EventType = MessageLikeEventType>> {
|
pub struct SyncMessageLikeEvent<C: MessageLikeEventContent> {
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
|
|
||||||
@ -93,9 +94,7 @@ pub struct SyncMessageLikeEvent<C: EventContent<EventType = MessageLikeEventType
|
|||||||
/// `RedactedMessageLikeEvent` implements the comparison traits using only the `event_id` field, a
|
/// `RedactedMessageLikeEvent` implements the comparison traits using only the `event_id` field, a
|
||||||
/// sorted list would be sorted lexicographically based on the event's `EventId`.
|
/// sorted list would be sorted lexicographically based on the event's `EventId`.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct RedactedMessageLikeEvent<
|
pub struct RedactedMessageLikeEvent<C: RedactedMessageLikeEventContent> {
|
||||||
C: EventContent<EventType = MessageLikeEventType> + RedactedEventContent,
|
|
||||||
> {
|
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
|
|
||||||
@ -120,9 +119,7 @@ pub struct RedactedMessageLikeEvent<
|
|||||||
/// `RedactedSyncMessageLikeEvent` implements the comparison traits using only the `event_id` field,
|
/// `RedactedSyncMessageLikeEvent` implements the comparison traits using only the `event_id` field,
|
||||||
/// a sorted list would be sorted lexicographically based on the event's `EventId`.
|
/// a sorted list would be sorted lexicographically based on the event's `EventId`.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct RedactedSyncMessageLikeEvent<
|
pub struct RedactedSyncMessageLikeEvent<C: RedactedMessageLikeEventContent> {
|
||||||
C: EventContent<EventType = MessageLikeEventType> + RedactedEventContent,
|
|
||||||
> {
|
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
|
|
||||||
@ -144,7 +141,7 @@ pub struct RedactedSyncMessageLikeEvent<
|
|||||||
/// `StateEvent` implements the comparison traits using only the `event_id` field, a sorted list
|
/// `StateEvent` implements the comparison traits using only the `event_id` field, a sorted list
|
||||||
/// would be sorted lexicographically based on the event's `EventId`.
|
/// would be sorted lexicographically based on the event's `EventId`.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct StateEvent<C: EventContent<EventType = StateEventType>> {
|
pub struct StateEvent<C: StateEventContent> {
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
|
|
||||||
@ -175,7 +172,7 @@ pub struct StateEvent<C: EventContent<EventType = StateEventType>> {
|
|||||||
/// `SyncStateEvent` implements the comparison traits using only the `event_id` field, a sorted list
|
/// `SyncStateEvent` implements the comparison traits using only the `event_id` field, a sorted list
|
||||||
/// would be sorted lexicographically based on the event's `EventId`.
|
/// would be sorted lexicographically based on the event's `EventId`.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct SyncStateEvent<C: EventContent<EventType = StateEventType>> {
|
pub struct SyncStateEvent<C: StateEventContent> {
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
|
|
||||||
@ -200,7 +197,7 @@ pub struct SyncStateEvent<C: EventContent<EventType = StateEventType>> {
|
|||||||
|
|
||||||
/// A stripped-down state event, used for previews of rooms the user has been invited to.
|
/// A stripped-down state event, used for previews of rooms the user has been invited to.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct StrippedStateEvent<C: EventContent<EventType = StateEventType>> {
|
pub struct StrippedStateEvent<C: StateEventContent> {
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
|
|
||||||
@ -216,7 +213,7 @@ pub struct StrippedStateEvent<C: EventContent<EventType = StateEventType>> {
|
|||||||
|
|
||||||
/// A minimal state event, used for creating a new room.
|
/// A minimal state event, used for creating a new room.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct InitialStateEvent<C: EventContent<EventType = StateEventType>> {
|
pub struct InitialStateEvent<C: StateEventContent> {
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
|
|
||||||
@ -235,7 +232,7 @@ pub struct InitialStateEvent<C: EventContent<EventType = StateEventType>> {
|
|||||||
/// `RedactedStateEvent` implements the comparison traits using only the `event_id` field, a sorted
|
/// `RedactedStateEvent` implements the comparison traits using only the `event_id` field, a sorted
|
||||||
/// list would be sorted lexicographically based on the event's `EventId`.
|
/// list would be sorted lexicographically based on the event's `EventId`.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct RedactedStateEvent<C: EventContent<EventType = StateEventType> + RedactedEventContent> {
|
pub struct RedactedStateEvent<C: RedactedStateEventContent> {
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
|
|
||||||
@ -266,9 +263,7 @@ pub struct RedactedStateEvent<C: EventContent<EventType = StateEventType> + Reda
|
|||||||
/// `RedactedSyncStateEvent` implements the comparison traits using only the `event_id` field, a
|
/// `RedactedSyncStateEvent` implements the comparison traits using only the `event_id` field, a
|
||||||
/// sorted list would be sorted lexicographically based on the event's `EventId`.
|
/// sorted list would be sorted lexicographically based on the event's `EventId`.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct RedactedSyncStateEvent<
|
pub struct RedactedSyncStateEvent<C: RedactedStateEventContent> {
|
||||||
C: EventContent<EventType = StateEventType> + RedactedEventContent,
|
|
||||||
> {
|
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
|
|
||||||
@ -293,7 +288,7 @@ pub struct RedactedSyncStateEvent<
|
|||||||
|
|
||||||
/// An event sent using send-to-device messaging.
|
/// An event sent using send-to-device messaging.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct ToDeviceEvent<C: EventContent<EventType = ToDeviceEventType>> {
|
pub struct ToDeviceEvent<C: ToDeviceEventContent> {
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
|
|
||||||
@ -303,7 +298,7 @@ pub struct ToDeviceEvent<C: EventContent<EventType = ToDeviceEventType>> {
|
|||||||
|
|
||||||
/// The decrypted payload of an `m.olm.v1.curve25519-aes-sha2` event.
|
/// The decrypted payload of an `m.olm.v1.curve25519-aes-sha2` event.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct DecryptedOlmV1Event<C: EventContent<EventType = MessageLikeEventType>> {
|
pub struct DecryptedOlmV1Event<C: MessageLikeEventContent> {
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
|
|
||||||
@ -329,7 +324,7 @@ pub struct OlmV1Keys {
|
|||||||
|
|
||||||
/// The decrypted payload of an `m.megolm.v1.aes-sha2` event.
|
/// The decrypted payload of an `m.megolm.v1.aes-sha2` event.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct DecryptedMegolmV1Event<C: EventContent<EventType = MessageLikeEventType>> {
|
pub struct DecryptedMegolmV1Event<C: MessageLikeEventContent> {
|
||||||
/// Data specific to the event type.
|
/// Data specific to the event type.
|
||||||
pub content: C,
|
pub content: C,
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ use serde_json::{from_str as from_json_str, value::RawValue as RawJsonValue};
|
|||||||
|
|
||||||
#[cfg(feature = "unstable-msc2675")]
|
#[cfg(feature = "unstable-msc2675")]
|
||||||
use super::relation::Relations;
|
use super::relation::Relations;
|
||||||
use super::{room::redaction::SyncRoomRedactionEvent, EventContent, StateEventType};
|
use super::{room::redaction::SyncRoomRedactionEvent, StateEventContent};
|
||||||
use crate::{serde::Raw, TransactionId};
|
use crate::{serde::Raw, TransactionId};
|
||||||
|
|
||||||
/// Extra information about a message event that is not incorporated into the event's hash.
|
/// Extra information about a message event that is not incorporated into the event's hash.
|
||||||
@ -57,7 +57,7 @@ impl MessageLikeUnsigned {
|
|||||||
/// Extra information about a state event that is not incorporated into the event's hash.
|
/// Extra information about a state event that is not incorporated into the event's hash.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||||
pub struct StateUnsigned<C: EventContent<EventType = StateEventType>> {
|
pub struct StateUnsigned<C: StateEventContent> {
|
||||||
/// The time in milliseconds that has elapsed since the event was sent.
|
/// The time in milliseconds that has elapsed since the event was sent.
|
||||||
///
|
///
|
||||||
/// This field is generated by the local homeserver, and may be incorrect if the local time on
|
/// This field is generated by the local homeserver, and may be incorrect if the local time on
|
||||||
@ -81,7 +81,7 @@ pub struct StateUnsigned<C: EventContent<EventType = StateEventType>> {
|
|||||||
pub relations: Option<Relations>,
|
pub relations: Option<Relations>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<C: EventContent<EventType = StateEventType>> StateUnsigned<C> {
|
impl<C: StateEventContent> StateUnsigned<C> {
|
||||||
/// Create a new `Unsigned` with fields set to `None`.
|
/// Create a new `Unsigned` with fields set to `None`.
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
Self {
|
Self {
|
||||||
@ -118,7 +118,7 @@ impl<C: EventContent<EventType = StateEventType>> StateUnsigned<C> {
|
|||||||
///
|
///
|
||||||
/// Needs to be public for UI tests.
|
/// Needs to be public for UI tests.
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
impl<C: EventContent<EventType = StateEventType>> StateUnsigned<C> {
|
impl<C: StateEventContent> StateUnsigned<C> {
|
||||||
pub fn _from_parts(event_type: &str, object: &RawJsonValue) -> serde_json::Result<Self> {
|
pub fn _from_parts(event_type: &str, object: &RawJsonValue) -> serde_json::Result<Self> {
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
#[serde(bound = "")] // Disable default C: Deserialize bound
|
#[serde(bound = "")] // Disable default C: Deserialize bound
|
||||||
@ -148,7 +148,7 @@ impl<C: EventContent<EventType = StateEventType>> StateUnsigned<C> {
|
|||||||
|
|
||||||
pub fn _map_prev_unsigned<T>(&self, f: impl FnOnce(&C) -> T) -> StateUnsigned<T>
|
pub fn _map_prev_unsigned<T>(&self, f: impl FnOnce(&C) -> T) -> StateUnsigned<T>
|
||||||
where
|
where
|
||||||
T: EventContent<EventType = StateEventType>,
|
T: StateEventContent,
|
||||||
{
|
{
|
||||||
StateUnsigned {
|
StateUnsigned {
|
||||||
age: self.age,
|
age: self.age,
|
||||||
@ -160,7 +160,7 @@ impl<C: EventContent<EventType = StateEventType>> StateUnsigned<C> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<C: EventContent<EventType = StateEventType>> Default for StateUnsigned<C> {
|
impl<C: StateEventContent> Default for StateUnsigned<C> {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self::new()
|
Self::new()
|
||||||
}
|
}
|
||||||
|
@ -4,14 +4,14 @@
|
|||||||
extern crate serde;
|
extern crate serde;
|
||||||
|
|
||||||
use ruma_common::{
|
use ruma_common::{
|
||||||
events::{EventContent, StateEventType, StateUnsigned},
|
events::{StateEventContent, StateUnsigned},
|
||||||
EventId, MilliSecondsSinceUnixEpoch, RoomId, UserId,
|
EventId, MilliSecondsSinceUnixEpoch, RoomId, UserId,
|
||||||
};
|
};
|
||||||
use ruma_macros::Event;
|
use ruma_macros::Event;
|
||||||
|
|
||||||
/// State event.
|
/// State event.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct StateEvent<C: EventContent<EventType = StateEventType>> {
|
pub struct StateEvent<C: StateEventContent> {
|
||||||
pub content: C,
|
pub content: C,
|
||||||
pub event_id: Box<EventId>,
|
pub event_id: Box<EventId>,
|
||||||
pub sender: Box<UserId>,
|
pub sender: Box<UserId>,
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
use ruma_common::events::{EventContent, StateEventType};
|
use ruma_common::events::StateEventContent;
|
||||||
use ruma_macros::Event;
|
use ruma_macros::Event;
|
||||||
|
|
||||||
/// State event.
|
/// State event.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct StateEvent<C: EventContent<EventType = StateEventType>>(C);
|
pub struct StateEvent<C: StateEventContent>(C);
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
error: the `Event` derive only supports structs with named fields
|
error: the `Event` derive only supports structs with named fields
|
||||||
--> tests/events/ui/05-named-fields.rs:6:12
|
--> tests/events/ui/05-named-fields.rs:6:12
|
||||||
|
|
|
|
||||||
6 | pub struct StateEvent<C: EventContent<EventType = StateEventType>>(C);
|
6 | pub struct StateEvent<C: StateEventContent>(C);
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
use ruma_common::events::{EventContent, StateEventType};
|
use ruma_common::events::StateEventContent;
|
||||||
use ruma_macros::Event;
|
use ruma_macros::Event;
|
||||||
|
|
||||||
/// State event.
|
/// State event.
|
||||||
#[derive(Clone, Debug, Event)]
|
#[derive(Clone, Debug, Event)]
|
||||||
pub struct StateEvent<C: EventContent<EventType = StateEventType>> {
|
pub struct StateEvent<C: StateEventContent> {
|
||||||
pub not_content: C,
|
pub not_content: C,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
error: struct must contain a `content` field
|
error: struct must contain a `content` field
|
||||||
--> $DIR/06-no-content-field.rs:5:24
|
--> tests/events/ui/06-no-content-field.rs:5:24
|
||||||
|
|
|
|
||||||
5 | #[derive(Clone, Debug, Event)]
|
5 | #[derive(Clone, Debug, Event)]
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
Loading…
x
Reference in New Issue
Block a user