state-res: Make all pub structs non_exhaustive
This commit is contained in:
parent
e05aad184e
commit
fae5385753
@ -16,6 +16,7 @@ all-features = true
|
||||
|
||||
[features]
|
||||
unstable-pre-spec = ["ruma-events/unstable-pre-spec"]
|
||||
unstable-exhaustive-types = []
|
||||
|
||||
[dependencies]
|
||||
itertools = "0.10.0"
|
||||
|
@ -4,6 +4,9 @@
|
||||
// `cargo bench unknown option --save-baseline`.
|
||||
// To pass args to criterion, use this form
|
||||
// `cargo bench --bench <name of the bench> -- --save-baseline <name>`.
|
||||
|
||||
#![allow(clippy::exhaustive_structs)]
|
||||
|
||||
use std::{
|
||||
collections::{BTreeMap, BTreeSet},
|
||||
convert::{TryFrom, TryInto},
|
||||
@ -372,7 +375,7 @@ where
|
||||
auth_events,
|
||||
prev_events,
|
||||
depth: uint!(0),
|
||||
hashes: EventHash { sha256: "".into() },
|
||||
hashes: EventHash::new(String::new()),
|
||||
signatures: btreemap! {},
|
||||
}),
|
||||
})
|
||||
@ -627,6 +630,8 @@ pub mod event {
|
||||
_ => false,
|
||||
},
|
||||
Pdu::RoomV3Pdu(event) => event.state_key == Some("".into()),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -634,6 +639,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => serde_json::from_value(ev.content.clone()),
|
||||
Pdu::RoomV3Pdu(ev) => serde_json::from_value(ev.content.clone()),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -641,6 +648,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => &ev.origin_server_ts,
|
||||
Pdu::RoomV3Pdu(ev) => &ev.origin_server_ts,
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -652,6 +661,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => &ev.sender,
|
||||
Pdu::RoomV3Pdu(ev) => &ev.sender,
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -659,6 +670,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => ev.redacts.as_ref(),
|
||||
Pdu::RoomV3Pdu(ev) => ev.redacts.as_ref(),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -666,18 +679,24 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => &ev.room_id,
|
||||
Pdu::RoomV3Pdu(ev) => &ev.room_id,
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
pub fn kind(&self) -> EventType {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => ev.kind.clone(),
|
||||
Pdu::RoomV3Pdu(ev) => ev.kind.clone(),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
pub fn state_key(&self) -> Option<String> {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => ev.state_key.clone(),
|
||||
Pdu::RoomV3Pdu(ev) => ev.state_key.clone(),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -686,6 +705,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => ev.origin.clone(),
|
||||
Pdu::RoomV3Pdu(ev) => ev.origin.clone(),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -693,6 +714,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => ev.prev_events.iter().map(|(id, _)| id).cloned().collect(),
|
||||
Pdu::RoomV3Pdu(ev) => ev.prev_events.clone(),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -700,6 +723,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => ev.auth_events.iter().map(|(id, _)| id).cloned().collect(),
|
||||
Pdu::RoomV3Pdu(ev) => ev.auth_events.to_vec(),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -707,6 +732,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => ev.content.clone(),
|
||||
Pdu::RoomV3Pdu(ev) => ev.content.clone(),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -714,6 +741,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => &ev.unsigned,
|
||||
Pdu::RoomV3Pdu(ev) => &ev.unsigned,
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -723,6 +752,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(_) => maplit::btreemap! {},
|
||||
Pdu::RoomV3Pdu(ev) => ev.signatures.clone(),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -730,6 +761,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => &ev.hashes,
|
||||
Pdu::RoomV3Pdu(ev) => &ev.hashes,
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -737,6 +770,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => &ev.depth,
|
||||
Pdu::RoomV3Pdu(ev) => &ev.depth,
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -748,6 +783,8 @@ pub mod event {
|
||||
Pdu::RoomV3Pdu(ev) => {
|
||||
ev.kind == ev_type && ev.state_key.as_deref() == Some(state_key)
|
||||
}
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -760,6 +797,8 @@ pub mod event {
|
||||
match self.rest {
|
||||
Pdu::RoomV1Pdu(_) => RoomVersionId::Version1,
|
||||
Pdu::RoomV3Pdu(_) => RoomVersionId::Version6,
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -33,6 +33,7 @@ pub type StateMap<T> = BTreeMap<(EventType, String), T>;
|
||||
pub type EventMap<T> = BTreeMap<EventId, T>;
|
||||
|
||||
#[derive(Default)]
|
||||
#[allow(clippy::exhaustive_structs)]
|
||||
pub struct StateResolution;
|
||||
|
||||
impl StateResolution {
|
||||
|
@ -26,6 +26,7 @@ pub enum StateResolutionVersion {
|
||||
V2,
|
||||
}
|
||||
|
||||
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||
pub struct RoomVersion {
|
||||
/// The version this room is set to.
|
||||
pub version: RoomVersionId,
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![allow(clippy::or_fun_call, clippy::expect_fun_call, dead_code)]
|
||||
#![allow(clippy::exhaustive_structs, dead_code)]
|
||||
|
||||
use std::{
|
||||
collections::{BTreeMap, BTreeSet},
|
||||
@ -60,14 +60,14 @@ pub fn do_check(
|
||||
|
||||
for pair in INITIAL_EDGES().windows(2) {
|
||||
if let [a, b] = &pair {
|
||||
graph.entry(a.clone()).or_insert(btreeset![]).insert(b.clone());
|
||||
graph.entry(a.clone()).or_insert_with(BTreeSet::new).insert(b.clone());
|
||||
}
|
||||
}
|
||||
|
||||
for edge_list in edges {
|
||||
for pair in edge_list.windows(2) {
|
||||
if let [a, b] = &pair {
|
||||
graph.entry(a.clone()).or_insert(btreeset![]).insert(b.clone());
|
||||
graph.entry(a.clone()).or_insert_with(BTreeSet::new).insert(b.clone());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -173,11 +173,13 @@ pub fn do_check(
|
||||
|
||||
let mut expected_state = StateMap::new();
|
||||
for node in expected_state_ids {
|
||||
let ev = event_map.get(&node).expect(&format!(
|
||||
"{} not found in {:?}",
|
||||
node.to_string(),
|
||||
event_map.keys().map(ToString::to_string).collect::<Vec<_>>(),
|
||||
));
|
||||
let ev = event_map.get(&node).unwrap_or_else(|| {
|
||||
panic!(
|
||||
"{} not found in {:?}",
|
||||
node.to_string(),
|
||||
event_map.keys().map(ToString::to_string).collect::<Vec<_>>()
|
||||
)
|
||||
});
|
||||
|
||||
let key = (ev.kind(), ev.state_key());
|
||||
|
||||
@ -334,7 +336,7 @@ pub fn to_init_pdu_event(
|
||||
auth_events: vec![],
|
||||
prev_events: vec![],
|
||||
depth: uint!(0),
|
||||
hashes: EventHash { sha256: "".into() },
|
||||
hashes: EventHash::new("".to_owned()),
|
||||
signatures: btreemap! {},
|
||||
}),
|
||||
})
|
||||
@ -374,7 +376,7 @@ where
|
||||
auth_events,
|
||||
prev_events,
|
||||
depth: uint!(0),
|
||||
hashes: EventHash { sha256: "".into() },
|
||||
hashes: EventHash::new("".to_owned()),
|
||||
signatures: btreemap! {},
|
||||
}),
|
||||
})
|
||||
@ -589,18 +591,24 @@ pub mod event {
|
||||
_ => false,
|
||||
},
|
||||
Pdu::RoomV3Pdu(event) => event.state_key == Some("".into()),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
pub fn deserialize_content<C: serde::de::DeserializeOwned>(&self) -> serde_json::Result<C> {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => serde_json::from_value(ev.content.clone()),
|
||||
Pdu::RoomV3Pdu(ev) => serde_json::from_value(ev.content.clone()),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
pub fn origin_server_ts(&self) -> &MilliSecondsSinceUnixEpoch {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => &ev.origin_server_ts,
|
||||
Pdu::RoomV3Pdu(ev) => &ev.origin_server_ts,
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
pub fn event_id(&self) -> &EventId {
|
||||
@ -611,6 +619,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => &ev.sender,
|
||||
Pdu::RoomV3Pdu(ev) => &ev.sender,
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -618,6 +628,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => ev.redacts.as_ref(),
|
||||
Pdu::RoomV3Pdu(ev) => ev.redacts.as_ref(),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -625,18 +637,24 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => &ev.room_id,
|
||||
Pdu::RoomV3Pdu(ev) => &ev.room_id,
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
pub fn kind(&self) -> EventType {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => ev.kind.clone(),
|
||||
Pdu::RoomV3Pdu(ev) => ev.kind.clone(),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
pub fn state_key(&self) -> String {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => ev.state_key.clone().unwrap(),
|
||||
Pdu::RoomV3Pdu(ev) => ev.state_key.clone().unwrap(),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -645,6 +663,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => ev.origin.clone(),
|
||||
Pdu::RoomV3Pdu(ev) => ev.origin.clone(),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -652,6 +672,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => ev.prev_events.iter().map(|(id, _)| id).cloned().collect(),
|
||||
Pdu::RoomV3Pdu(ev) => ev.prev_events.clone(),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -659,6 +681,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => ev.auth_events.iter().map(|(id, _)| id).cloned().collect(),
|
||||
Pdu::RoomV3Pdu(ev) => ev.auth_events.to_vec(),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -666,6 +690,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => ev.content.clone(),
|
||||
Pdu::RoomV3Pdu(ev) => ev.content.clone(),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -673,6 +699,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => &ev.unsigned,
|
||||
Pdu::RoomV3Pdu(ev) => &ev.unsigned,
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -682,6 +710,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(_) => maplit::btreemap! {},
|
||||
Pdu::RoomV3Pdu(ev) => ev.signatures.clone(),
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -689,6 +719,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => &ev.hashes,
|
||||
Pdu::RoomV3Pdu(ev) => &ev.hashes,
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -696,6 +728,8 @@ pub mod event {
|
||||
match &self.rest {
|
||||
Pdu::RoomV1Pdu(ev) => &ev.depth,
|
||||
Pdu::RoomV3Pdu(ev) => &ev.depth,
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -707,6 +741,8 @@ pub mod event {
|
||||
Pdu::RoomV3Pdu(ev) => {
|
||||
ev.kind == ev_type && ev.state_key.as_deref() == Some(state_key)
|
||||
}
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -719,6 +755,8 @@ pub mod event {
|
||||
match self.rest {
|
||||
Pdu::RoomV1Pdu(_) => RoomVersionId::Version1,
|
||||
Pdu::RoomV3Pdu(_) => RoomVersionId::Version6,
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
_ => unreachable!("new PDU version"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -103,12 +103,14 @@ unstable-exhaustive-types = [
|
||||
"ruma-federation-api/unstable-exhaustive-types",
|
||||
"ruma-identity-service-api/unstable-exhaustive-types",
|
||||
"ruma-push-gateway-api/unstable-exhaustive-types",
|
||||
"ruma-state-res/unstable-exhaustive-types"
|
||||
]
|
||||
unstable-pre-spec = [
|
||||
"ruma-common/unstable-pre-spec",
|
||||
"ruma-client-api/unstable-pre-spec",
|
||||
"ruma-events/unstable-pre-spec",
|
||||
"ruma-federation-api/unstable-pre-spec",
|
||||
"ruma-state-res/unstable-pre-spec"
|
||||
#"ruma-identity-service-api/unstable-pre-spec",
|
||||
#"ruma-push-gateway-api/unstable-pre-spec",
|
||||
]
|
||||
|
Loading…
x
Reference in New Issue
Block a user