Exhausively match EventType in collection deserilization code

This commit is contained in:
Jonas Platte 2019-10-27 21:26:03 +01:00
parent 3b78391fbc
commit 63e32f2b01
2 changed files with 116 additions and 4 deletions

View File

@ -457,7 +457,27 @@ impl<'de> Deserialize<'de> for RoomEvent {
from_value(value, RoomEvent::CustomRoom)
}
}
_ => Err(D::Error::custom("invalid event type")),
Direct
| Dummy
| ForwardedRoomKey
| FullyRead
| IgnoredUserList
| KeyVerificationAccept
| KeyVerificationCancel
| KeyVerificationKey
| KeyVerificationMac
| KeyVerificationRequest
| KeyVerificationStart
| Presence
| PushRules
| Receipt
| RoomKey
| RoomKeyRequest
| Tag
| Typing => Err(D::Error::custom("invalid event type")),
__Nonexhaustive => {
unreachable!("__Nonexhaustive variant should be impossible to obtain.")
}
}
}
}
@ -491,7 +511,36 @@ impl<'de> Deserialize<'de> for StateEvent {
RoomTombstone => from_value(value, StateEvent::RoomTombstone),
RoomTopic => from_value(value, StateEvent::RoomTopic),
Custom(_event_type_name) => from_value(value, StateEvent::CustomState),
_ => Err(D::Error::custom("invalid event type")),
CallAnswer
| CallCandidates
| CallHangup
| CallInvite
| Direct
| Dummy
| ForwardedRoomKey
| FullyRead
| IgnoredUserList
| KeyVerificationAccept
| KeyVerificationCancel
| KeyVerificationKey
| KeyVerificationMac
| KeyVerificationRequest
| KeyVerificationStart
| Presence
| PushRules
| Receipt
| RoomEncrypted
| RoomKey
| RoomKeyRequest
| RoomMessage
| RoomMessageFeedback
| RoomRedaction
| Sticker
| Tag
| Typing => Err(D::Error::custom("invalid event type")),
__Nonexhaustive => {
unreachable!("__Nonexhaustive variant should be impossible to obtain.")
}
}
}
}

View File

@ -176,7 +176,34 @@ impl<'de> Deserialize<'de> for Event {
Tag => from_value(value, Event::Tag),
Typing => from_value(value, Event::Typing),
Custom(_event_type_name) => from_value(value, Event::Custom),
_ => Err(D::Error::custom("invalid event type")),
CallAnswer
| CallCandidates
| CallHangup
| CallInvite
| RoomAliases
| RoomAvatar
| RoomCanonicalAlias
| RoomCreate
| RoomEncrypted
| RoomEncryption
| RoomGuestAccess
| RoomHistoryVisibility
| RoomJoinRules
| RoomMember
| RoomMessage
| RoomMessageFeedback
| RoomName
| RoomPinnedEvents
| RoomPowerLevels
| RoomServerAcl
| RoomThirdPartyInvite
| RoomTombstone
| RoomTopic
| RoomRedaction
| Sticker => Err(D::Error::custom("invalid event type")),
__Nonexhaustive => {
unreachable!("__Nonexhaustive variant should be impossible to obtain.")
}
}
}
}
@ -203,7 +230,43 @@ impl<'de> Deserialize<'de> for RoomEvent {
RoomRedaction => from_value(value, RoomEvent::RoomRedaction),
Sticker => from_value(value, RoomEvent::Sticker),
Custom(_event_type_name) => from_value(value, RoomEvent::CustomRoom),
_ => Err(D::Error::custom("invalid event type")),
Direct
| Dummy
| ForwardedRoomKey
| FullyRead
| IgnoredUserList
| KeyVerificationAccept
| KeyVerificationCancel
| KeyVerificationKey
| KeyVerificationMac
| KeyVerificationRequest
| KeyVerificationStart
| Presence
| PushRules
| Receipt
| RoomAvatar
| RoomAliases
| RoomCanonicalAlias
| RoomCreate
| RoomEncryption
| RoomGuestAccess
| RoomHistoryVisibility
| RoomJoinRules
| RoomKey
| RoomKeyRequest
| RoomMember
| RoomName
| RoomPinnedEvents
| RoomPowerLevels
| RoomServerAcl
| RoomThirdPartyInvite
| RoomTombstone
| RoomTopic
| Tag
| Typing => Err(D::Error::custom("invalid event type")),
__Nonexhaustive => {
unreachable!("__Nonexhaustive variant should be impossible to obtain.")
}
}
}
}