ruma_common/identifiers/
base64_public_key_or_device_id.rs1use ruma_macros::IdZst;
2
3use super::{
4 Base64PublicKey, DeviceId, IdParseError, KeyName, OwnedBase64PublicKey, OwnedDeviceId,
5};
6
7#[repr(transparent)]
28#[derive(PartialEq, Eq, PartialOrd, Ord, Hash, IdZst)]
29pub struct Base64PublicKeyOrDeviceId(str);
30
31impl KeyName for Base64PublicKeyOrDeviceId {
32 fn validate(_s: &str) -> Result<(), IdParseError> {
33 Ok(())
34 }
35}
36
37impl KeyName for OwnedBase64PublicKeyOrDeviceId {
38 fn validate(_s: &str) -> Result<(), IdParseError> {
39 Ok(())
40 }
41}
42
43impl<'a> From<&'a DeviceId> for &'a Base64PublicKeyOrDeviceId {
44 fn from(value: &'a DeviceId) -> Self {
45 Self::from(value.as_str())
46 }
47}
48
49impl From<OwnedDeviceId> for OwnedBase64PublicKeyOrDeviceId {
50 fn from(value: OwnedDeviceId) -> Self {
51 Self::from(value.as_str())
52 }
53}
54
55impl<'a> From<&'a Base64PublicKey> for &'a Base64PublicKeyOrDeviceId {
56 fn from(value: &'a Base64PublicKey) -> Self {
57 Self::from(value.as_str())
58 }
59}
60
61impl From<OwnedBase64PublicKey> for OwnedBase64PublicKeyOrDeviceId {
62 fn from(value: OwnedBase64PublicKey) -> Self {
63 Self::from(value.as_str())
64 }
65}