#![allow(clippy::exhaustive_structs)]
use ruma_common::OwnedMxcUri;
#[cfg(feature = "unstable-msc4426")]
use ruma_common::profile::{CallProfileField, StatusProfileField};
use serde::{Serialize, de::DeserializeOwned};
pub trait StaticProfileField {
type Value: Sized + Serialize + DeserializeOwned;
const NAME: &str;
}
#[derive(Debug, Clone, Copy)]
pub struct AvatarUrl;
impl StaticProfileField for AvatarUrl {
type Value = OwnedMxcUri;
const NAME: &str = "avatar_url";
}
#[derive(Debug, Clone, Copy)]
pub struct DisplayName;
impl StaticProfileField for DisplayName {
type Value = String;
const NAME: &str = "displayname";
}
#[derive(Debug, Clone, Copy)]
pub struct TimeZone;
impl StaticProfileField for TimeZone {
type Value = String;
const NAME: &str = "m.tz";
}
#[cfg(feature = "unstable-msc4426")]
#[derive(Debug, Clone, Copy)]
pub struct Status;
#[cfg(feature = "unstable-msc4426")]
impl StaticProfileField for Status {
type Value = StatusProfileField;
const NAME: &str = "org.matrix.msc4426.status";
}
#[cfg(feature = "unstable-msc4426")]
#[derive(Debug, Clone, Copy)]
pub struct Call;
#[cfg(feature = "unstable-msc4426")]
impl StaticProfileField for Call {
type Value = CallProfileField;
const NAME: &str = "org.matrix.msc4426.call";
}