diff --git a/akd/src/directory.rs b/akd/src/directory.rs index f72c8201..c0fef0ac 100644 --- a/akd/src/directory.rs +++ b/akd/src/directory.rs @@ -493,7 +493,7 @@ where // Ignore states in storage which are ahead of the current directory epoch user_data.retain(|vs| vs.epoch <= current_epoch); // Reverse sort from highest epoch to lowest - user_data.sort_by(|a, b| b.epoch.cmp(&a.epoch)); + user_data.sort_by_key(|b| std::cmp::Reverse(b.epoch)); // Apply filters specified by HistoryParams struct user_data = match params { diff --git a/akd/src/storage/cache/high_parallelism.rs b/akd/src/storage/cache/high_parallelism.rs index 05fe9d18..8faadd0c 100644 --- a/akd/src/storage/cache/high_parallelism.rs +++ b/akd/src/storage/cache/high_parallelism.rs @@ -98,7 +98,7 @@ impl TimedCache { .iter() .map(|kv| (kv.key().clone(), kv.value().expiration)) .collect::>(); - keys_and_expiration.sort_by(|(_, a), (_, b)| a.cmp(b)); + keys_and_expiration.sort_by_key(|(_, a)| *a); // take `num_clean` old entries and remove them for key in keys_and_expiration .into_iter() diff --git a/akd/src/storage/memory.rs b/akd/src/storage/memory.rs index df50abf6..7b5245cd 100644 --- a/akd/src/storage/memory.rs +++ b/akd/src/storage/memory.rs @@ -184,7 +184,7 @@ impl Database for AsyncInMemoryDatabase { if let Some(result) = self.user_info.get(&username.0) { let mut results: Vec = result.values().cloned().collect::>(); // return ordered by epoch (from smallest -> largest) - results.sort_by(|a, b| a.epoch.cmp(&b.epoch)); + results.sort_by_key(|a| a.epoch); Ok(KeyData { states: results }) } else { diff --git a/akd/src/storage/tests.rs b/akd/src/storage/tests.rs index 54304636..a62970e5 100644 --- a/akd/src/storage/tests.rs +++ b/akd/src/storage/tests.rs @@ -144,8 +144,7 @@ async fn test_batch_get_items(storage: &Ns) { let mut data = Vec::new(); - let mut epoch = 1; - for value in rand_users.iter() { + for (epoch, value) in (1..).zip(rand_users.iter()) { for user in rand_users.iter() { data.push(DbRecord::ValueState(ValueState { value: AkdValue(value.clone()), @@ -158,7 +157,6 @@ async fn test_batch_get_items(storage: &Ns) { username: AkdLabel(user.clone()), })); } - epoch += 1; } let tic = Instant::now(); @@ -312,8 +310,7 @@ async fn test_transactions(storage: &StorageManager) { let mut data = Vec::new(); - let mut epoch = 1; - for value in rand_users.iter() { + for (epoch, value) in (1..).zip(rand_users.iter()) { for user in rand_users.iter() { data.push(DbRecord::ValueState(ValueState { value: AkdValue(value.clone()), @@ -326,7 +323,6 @@ async fn test_transactions(storage: &StorageManager) { username: AkdLabel(user.clone()), })); } - epoch += 1; } data.push(DbRecord::Azks(Azks { diff --git a/akd/src/storage/transaction.rs b/akd/src/storage/transaction.rs index 21e94db5..baf568d0 100644 --- a/akd/src/storage/transaction.rs +++ b/akd/src/storage/transaction.rs @@ -203,7 +203,7 @@ impl Transaction { // sort all the value lists by epoch for (_k, v) in results.iter_mut() { - v.sort_unstable_by(|a, b| a.epoch.cmp(&b.epoch)); + v.sort_unstable_by_key(|a| a.epoch); } results diff --git a/examples/src/whatsapp_kt_auditor/auditor.rs b/examples/src/whatsapp_kt_auditor/auditor.rs index a69cde17..aa025ac7 100644 --- a/examples/src/whatsapp_kt_auditor/auditor.rs +++ b/examples/src/whatsapp_kt_auditor/auditor.rs @@ -43,7 +43,7 @@ pub(crate) async fn audit_epoch(blob: akd::local_auditing::AuditBlob) -> Result< } pub(crate) fn display_audit_proofs_info(info: &mut [EpochSummary]) -> Result { - info.sort_by(|a, b| a.name.epoch.cmp(&b.name.epoch)); + info.sort_by_key(|a| a.name.epoch); if info.is_empty() { bail!("There are no epochs present in the storage repository"); }