identifiers: Fix the bounds for Clone, Serialize and Deserialize on Signatures
This commit is contained in:
parent
35da79a26e
commit
eb57bb2797
@ -6,8 +6,7 @@ use std::{
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
KeyName, OwnedDeviceId, OwnedServerName, OwnedServerSigningKeyVersion, OwnedSigningKeyId,
|
DeviceId, KeyName, OwnedServerName, OwnedSigningKeyId, OwnedUserId, ServerSigningKeyVersion,
|
||||||
OwnedUserId,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Map of key identifier to signature values.
|
/// Map of key identifier to signature values.
|
||||||
@ -27,8 +26,11 @@ pub type EntitySignatures<K> = BTreeMap<OwnedSigningKeyId<K>, String>;
|
|||||||
/// "YbJva03ihSj5mPk+CHMJKUKlCXCPFXjXOK6VqBnN9nA2evksQcTGn6hwQfrgRHIDDXO2le49x7jnWJHMJrJoBQ";
|
/// "YbJva03ihSj5mPk+CHMJKUKlCXCPFXjXOK6VqBnN9nA2evksQcTGn6hwQfrgRHIDDXO2le49x7jnWJHMJrJoBQ";
|
||||||
/// signatures.insert_signature(server_name, key_identifier, signature.into());
|
/// signatures.insert_signature(server_name, key_identifier, signature.into());
|
||||||
/// ```
|
/// ```
|
||||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
#[serde(transparent)]
|
#[serde(
|
||||||
|
transparent,
|
||||||
|
bound(serialize = "E: Serialize", deserialize = "E: serde::de::DeserializeOwned")
|
||||||
|
)]
|
||||||
pub struct Signatures<E: Ord, K: KeyName + ?Sized>(BTreeMap<E, EntitySignatures<K>>);
|
pub struct Signatures<E: Ord, K: KeyName + ?Sized>(BTreeMap<E, EntitySignatures<K>>);
|
||||||
|
|
||||||
impl<E: Ord, K: KeyName + ?Sized> Signatures<E, K> {
|
impl<E: Ord, K: KeyName + ?Sized> Signatures<E, K> {
|
||||||
@ -50,11 +52,21 @@ impl<E: Ord, K: KeyName + ?Sized> Signatures<E, K> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Map of server signatures for an event, grouped by server.
|
/// Map of server signatures, grouped by server.
|
||||||
pub type ServerSignatures = Signatures<OwnedServerName, OwnedServerSigningKeyVersion>;
|
pub type ServerSignatures = Signatures<OwnedServerName, ServerSigningKeyVersion>;
|
||||||
|
|
||||||
/// Map of device signatures for an event, grouped by user.
|
/// Map of device signatures, grouped by user.
|
||||||
pub type DeviceSignatures = Signatures<OwnedUserId, OwnedDeviceId>;
|
pub type DeviceSignatures = Signatures<OwnedUserId, DeviceId>;
|
||||||
|
|
||||||
|
impl<E, K> Clone for Signatures<E, K>
|
||||||
|
where
|
||||||
|
E: Ord + Clone,
|
||||||
|
K: KeyName + ?Sized,
|
||||||
|
{
|
||||||
|
fn clone(&self) -> Self {
|
||||||
|
Self(self.0.clone())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<E: Ord, K: KeyName + ?Sized> Default for Signatures<E, K> {
|
impl<E: Ord, K: KeyName + ?Sized> Default for Signatures<E, K> {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user