mastodon_async_entities/
relationship.rs1use std::fmt::Display;
5
6use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
10pub struct Relationship {
11 pub id: RelationshipId,
13 pub following: bool,
15 pub followed_by: bool,
17 pub blocking: bool,
19 pub muting: bool,
21 pub requested: bool,
23 pub muting_notifications: bool,
25 pub domain_blocking: bool,
27 pub showing_reblogs: bool,
29 pub endorsed: Option<bool>,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
39#[serde(transparent)]
40pub struct RelationshipId(String);
41
42impl AsRef<str> for RelationshipId {
43 fn as_ref(&self) -> &str {
44 &self.0
45 }
46}
47
48impl RelationshipId {
49 pub fn new(value: impl Into<String>) -> Self {
50 Self(value.into())
51 }
52}
53impl Display for RelationshipId {
54 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
55 write!(f, "{}", self.0)
56 }
57}
58
59static_assertions::assert_not_impl_any!(
60 RelationshipId: PartialEq<crate::account::AccountId>,
61 PartialEq<crate::attachment::AttachmentId>,
62 PartialEq<crate::filter::FilterId>,
63 PartialEq<crate::push::SubscriptionId>,
64 PartialEq<crate::mention::MentionId>,
65 PartialEq<crate::notification::NotificationId>,
66 PartialEq<crate::list::ListId>,
67 PartialEq<crate::report::ReportId>,
68 PartialEq<crate::status::StatusId>,
69);