Skip to content

Commit 6baffc4

Browse files
committed
Refactor EncodeKey implementations
1 parent c6594ed commit 6baffc4

File tree

2 files changed

+53
-19
lines changed
  • crates
    • matrix-sdk-base/src/store/sled_store
    • matrix-sdk-crypto/src/store

2 files changed

+53
-19
lines changed

crates/matrix-sdk-base/src/store/sled_store/mod.rs

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -93,19 +93,37 @@ trait EncodeKey {
9393
fn encode(&self) -> Vec<u8>;
9494
}
9595

96-
impl EncodeKey for &UserId {
96+
impl<T: EncodeKey> EncodeKey for &T {
97+
fn encode(&self) -> Vec<u8> {
98+
T::encode(self)
99+
}
100+
}
101+
102+
impl<T: EncodeKey> EncodeKey for Box<T> {
103+
fn encode(&self) -> Vec<u8> {
104+
T::encode(self)
105+
}
106+
}
107+
108+
impl EncodeKey for UserId {
109+
fn encode(&self) -> Vec<u8> {
110+
self.as_str().encode()
111+
}
112+
}
113+
114+
impl EncodeKey for RoomId {
97115
fn encode(&self) -> Vec<u8> {
98116
self.as_str().encode()
99117
}
100118
}
101119

102-
impl EncodeKey for &RoomId {
120+
impl EncodeKey for String {
103121
fn encode(&self) -> Vec<u8> {
104122
self.as_str().encode()
105123
}
106124
}
107125

108-
impl EncodeKey for &str {
126+
impl EncodeKey for str {
109127
fn encode(&self) -> Vec<u8> {
110128
[self.as_bytes(), &[ENCODE_SEPARATOR]].concat()
111129
}
@@ -425,7 +443,7 @@ impl SledStore {
425443

426444
for (event_type, event) in &changes.account_data {
427445
account_data.insert(
428-
event_type.as_str().encode(),
446+
event_type.encode(),
429447
self.serialize_event(&event)
430448
.map_err(ConflictableTransactionError::Abort)?,
431449
)?;
@@ -456,23 +474,23 @@ impl SledStore {
456474

457475
for (room_id, room_info) in &changes.room_infos {
458476
rooms.insert(
459-
(&**room_id).encode(),
477+
room_id.encode(),
460478
self.serialize_event(room_info)
461479
.map_err(ConflictableTransactionError::Abort)?,
462480
)?;
463481
}
464482

465483
for (sender, event) in &changes.presence {
466484
presence.insert(
467-
(&**sender).encode(),
485+
sender.encode(),
468486
self.serialize_event(&event)
469487
.map_err(ConflictableTransactionError::Abort)?,
470488
)?;
471489
}
472490

473491
for (room_id, info) in &changes.invited_room_info {
474492
striped_rooms.insert(
475-
(&**room_id).encode(),
493+
room_id.encode(),
476494
self.serialize_event(&info)
477495
.map_err(ConflictableTransactionError::Abort)?,
478496
)?;

crates/matrix-sdk-crypto/src/store/sled.rs

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,18 @@ trait EncodeKey {
5757
fn encode(&self) -> Vec<u8>;
5858
}
5959

60+
impl<T: EncodeKey> EncodeKey for &T {
61+
fn encode(&self) -> Vec<u8> {
62+
T::encode(self)
63+
}
64+
}
65+
66+
impl<T: EncodeKey> EncodeKey for Box<T> {
67+
fn encode(&self) -> Vec<u8> {
68+
T::encode(self)
69+
}
70+
}
71+
6072
impl EncodeKey for Uuid {
6173
fn encode(&self) -> Vec<u8> {
6274
self.as_u128().to_be_bytes().to_vec()
@@ -78,7 +90,7 @@ impl EncodeKey for SecretInfo {
7890
}
7991
}
8092

81-
impl EncodeKey for &RequestedKeyInfo {
93+
impl EncodeKey for RequestedKeyInfo {
8294
fn encode(&self) -> Vec<u8> {
8395
[
8496
self.room_id.as_bytes(),
@@ -94,25 +106,31 @@ impl EncodeKey for &RequestedKeyInfo {
94106
}
95107
}
96108

97-
impl EncodeKey for &UserId {
109+
impl EncodeKey for UserId {
98110
fn encode(&self) -> Vec<u8> {
99111
self.as_str().encode()
100112
}
101113
}
102114

103-
impl EncodeKey for &ReadOnlyDevice {
115+
impl EncodeKey for ReadOnlyDevice {
104116
fn encode(&self) -> Vec<u8> {
105117
(self.user_id().as_str(), self.device_id().as_str()).encode()
106118
}
107119
}
108120

109-
impl EncodeKey for &RoomId {
121+
impl EncodeKey for RoomId {
110122
fn encode(&self) -> Vec<u8> {
111123
self.as_str().encode()
112124
}
113125
}
114126

115-
impl EncodeKey for &str {
127+
impl EncodeKey for String {
128+
fn encode(&self) -> Vec<u8> {
129+
self.as_str().encode()
130+
}
131+
}
132+
133+
impl EncodeKey for str {
116134
fn encode(&self) -> Vec<u8> {
117135
[self.as_bytes(), &[Self::SEPARATOR]].concat()
118136
}
@@ -613,7 +631,7 @@ impl SledStore {
613631

614632
for (key, session) in &outbound_session_changes {
615633
outbound_sessions.insert(
616-
(&**key).encode(),
634+
key.encode(),
617635
serde_json::to_vec(&session)
618636
.map_err(ConflictableTransactionError::Abort)?,
619637
)?;
@@ -628,10 +646,8 @@ impl SledStore {
628646
}
629647

630648
for key_request in &key_requests {
631-
secret_requests_by_info.insert(
632-
(&key_request.info).encode(),
633-
key_request.request_id.encode(),
634-
)?;
649+
secret_requests_by_info
650+
.insert(key_request.info.encode(), key_request.request_id.encode())?;
635651

636652
let key_request_id = key_request.request_id.encode();
637653

@@ -965,11 +981,11 @@ impl CryptoStore for SledStore {
965981
.map_err(ConflictableTransactionError::Abort)?;
966982

967983
if let Some(request) = sent_request {
968-
key_requests_by_info.remove((&request.info).encode())?;
984+
key_requests_by_info.remove(request.info.encode())?;
969985
}
970986

971987
if let Some(request) = unsent_request {
972-
key_requests_by_info.remove((&request.info).encode())?;
988+
key_requests_by_info.remove(request.info.encode())?;
973989
}
974990

975991
Ok(())

0 commit comments

Comments
 (0)