Skip to content

Commit

Permalink
Add static assertions
Browse files Browse the repository at this point in the history
  • Loading branch information
dscottboggs committed Jan 9, 2023
1 parent fcc2035 commit c93e5a5
Show file tree
Hide file tree
Showing 11 changed files with 120 additions and 0 deletions.
1 change: 1 addition & 0 deletions entities/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ log = { version = "0.4", features = ["kv_unstable", "serde", "std", "kv_unstable
serde = { version = "1", features = ["derive"] }
thiserror = "1"
time = { version = "0.3", features = ["parsing", "serde", "formatting"] }
static_assertions = "1"
12 changes: 12 additions & 0 deletions entities/src/account.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,18 @@ impl AccountId {
}
}

static_assertions::assert_not_impl_any!(
AccountId: PartialEq<crate::attachment::AttachmentId>,
PartialEq<crate::filter::FilterId>,
PartialEq<crate::list::ListId>,
PartialEq<crate::mention::MentionId>,
PartialEq<crate::notification::NotificationId>,
PartialEq<crate::relationship::RelationshipId>,
PartialEq<crate::push::SubscriptionId>,
PartialEq<crate::report::ReportId>,
PartialEq<crate::status::StatusId>,
);

/// A single name: value pair from a user's profile
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub struct MetadataField {
Expand Down
12 changes: 12 additions & 0 deletions entities/src/attachment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,18 @@ impl AttachmentId {
}
}

static_assertions::assert_not_impl_any!(
AttachmentId: PartialEq<crate::account::AccountId>,
PartialEq<crate::filter::FilterId>,
PartialEq<crate::list::ListId>,
PartialEq<crate::mention::MentionId>,
PartialEq<crate::notification::NotificationId>,
PartialEq<crate::relationship::RelationshipId>,
PartialEq<crate::report::ReportId>,
PartialEq<crate::push::SubscriptionId>,
PartialEq<crate::status::StatusId>,
);

/// Information about the attachment itself.
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
pub struct Meta {
Expand Down
12 changes: 12 additions & 0 deletions entities/src/filter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,18 @@ impl FilterId {
}
}

static_assertions::assert_not_impl_any!(
FilterId: PartialEq<crate::account::AccountId>,
PartialEq<crate::attachment::AttachmentId>,
PartialEq<crate::list::ListId>,
PartialEq<crate::mention::MentionId>,
PartialEq<crate::notification::NotificationId>,
PartialEq<crate::relationship::RelationshipId>,
PartialEq<crate::push::SubscriptionId>,
PartialEq<crate::report::ReportId>,
PartialEq<crate::status::StatusId>,
);

/// Represents the various types of Filter contexts
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
Expand Down
12 changes: 12 additions & 0 deletions entities/src/list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,15 @@ impl ListId {
Self(value.into())
}
}

static_assertions::assert_not_impl_any!(
ListId: PartialEq<crate::account::AccountId>,
PartialEq<crate::attachment::AttachmentId>,
PartialEq<crate::filter::FilterId>,
PartialEq<crate::push::SubscriptionId>,
PartialEq<crate::mention::MentionId>,
PartialEq<crate::notification::NotificationId>,
PartialEq<crate::relationship::RelationshipId>,
PartialEq<crate::report::ReportId>,
PartialEq<crate::status::StatusId>,
);
12 changes: 12 additions & 0 deletions entities/src/mention.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,15 @@ impl MentionId {
Self(value.into())
}
}

static_assertions::assert_not_impl_any!(
Mention: PartialEq<crate::account::AccountId>,
PartialEq<crate::attachment::AttachmentId>,
PartialEq<crate::filter::FilterId>,
PartialEq<crate::list::ListId>,
PartialEq<crate::notification::NotificationId>,
PartialEq<crate::relationship::RelationshipId>,
PartialEq<crate::push::SubscriptionId>,
PartialEq<crate::report::ReportId>,
PartialEq<crate::status::StatusId>,
);
12 changes: 12 additions & 0 deletions entities/src/notification.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,18 @@ impl NotificationId {
}
}

static_assertions::assert_not_impl_any!(
NotificationId: PartialEq<crate::account::AccountId>,
PartialEq<crate::attachment::AttachmentId>,
PartialEq<crate::filter::FilterId>,
PartialEq<crate::mention::MentionId>,
PartialEq<crate::list::ListId>,
PartialEq<crate::push::SubscriptionId>,
PartialEq<crate::relationship::RelationshipId>,
PartialEq<crate::report::ReportId>,
PartialEq<crate::status::StatusId>,
);

/// The type of notification.
#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq)]
#[serde(rename_all = "lowercase")]
Expand Down
11 changes: 11 additions & 0 deletions entities/src/push.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,17 @@ impl SubscriptionId {
}
}

static_assertions::assert_not_impl_any!(
SubscriptionId: PartialEq<crate::account::AccountId>,
PartialEq<crate::attachment::AttachmentId>,
PartialEq<crate::filter::FilterId>,
PartialEq<crate::mention::MentionId>,
PartialEq<crate::notification::NotificationId>,
PartialEq<crate::relationship::RelationshipId>,
PartialEq<crate::report::ReportId>,
PartialEq<crate::status::StatusId>,
);

pub mod add_subscription {
use serde::Serialize;

Expand Down
12 changes: 12 additions & 0 deletions entities/src/relationship.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,15 @@ impl RelationshipId {
Self(value.into())
}
}

static_assertions::assert_not_impl_any!(
RelationshipId: PartialEq<crate::account::AccountId>,
PartialEq<crate::attachment::AttachmentId>,
PartialEq<crate::filter::FilterId>,
PartialEq<crate::push::SubscriptionId>,
PartialEq<crate::mention::MentionId>,
PartialEq<crate::notification::NotificationId>,
PartialEq<crate::list::ListId>,
PartialEq<crate::report::ReportId>,
PartialEq<crate::status::StatusId>,
);
12 changes: 12 additions & 0 deletions entities/src/report.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,15 @@ impl ReportId {
Self(value.into())
}
}

static_assertions::assert_not_impl_any!(
ReportId: PartialEq<crate::account::AccountId>,
PartialEq<crate::attachment::AttachmentId>,
PartialEq<crate::filter::FilterId>,
PartialEq<crate::push::SubscriptionId>,
PartialEq<crate::mention::MentionId>,
PartialEq<crate::notification::NotificationId>,
PartialEq<crate::relationship::RelationshipId>,
PartialEq<crate::list::ListId>,
PartialEq<crate::status::StatusId>,
);
12 changes: 12 additions & 0 deletions entities/src/status.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,18 @@ impl StatusId {
}
}

static_assertions::assert_not_impl_any!(
StatusId: PartialEq<crate::account::AccountId>,
PartialEq<crate::attachment::AttachmentId>,
PartialEq<crate::filter::FilterId>,
PartialEq<crate::push::SubscriptionId>,
PartialEq<crate::mention::MentionId>,
PartialEq<crate::notification::NotificationId>,
PartialEq<crate::relationship::RelationshipId>,
PartialEq<crate::report::ReportId>,
PartialEq<crate::list::ListId>,
);

/// A mention of another user.
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct Mention {
Expand Down

0 comments on commit c93e5a5

Please # to comment.