From 9a009ef125ca8f2d55db0c7cfce445fcfbc5e656 Mon Sep 17 00:00:00 2001 From: thesimplekid Date: Sat, 24 Aug 2024 09:48:38 +0300 Subject: [PATCH] feat: use BTreeMap for wallet list --- crates/cdk-cli/src/sub_commands/balance.rs | 6 +++--- crates/cdk/src/nuts/nut00/mod.rs | 2 +- crates/cdk/src/wallet/multi_mint_wallet.rs | 10 +++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/crates/cdk-cli/src/sub_commands/balance.rs b/crates/cdk-cli/src/sub_commands/balance.rs index 97953222..3fa700d6 100644 --- a/crates/cdk-cli/src/sub_commands/balance.rs +++ b/crates/cdk-cli/src/sub_commands/balance.rs @@ -1,4 +1,4 @@ -use std::collections::HashMap; +use std::collections::BTreeMap; use anyhow::Result; use cdk::mint_url::MintUrl; @@ -15,9 +15,9 @@ pub async fn mint_balances( multi_mint_wallet: &MultiMintWallet, unit: &CurrencyUnit, ) -> Result> { - let wallets: HashMap = multi_mint_wallet.get_balances(unit).await?; + let wallets: BTreeMap = multi_mint_wallet.get_balances(unit).await?; - let mut wallets_vec = Vec::with_capacity(wallets.capacity()); + let mut wallets_vec = Vec::with_capacity(wallets.len()); for (i, (mint_url, amount)) in wallets.iter().enumerate() { let mint_url = mint_url.clone(); diff --git a/crates/cdk/src/nuts/nut00/mod.rs b/crates/cdk/src/nuts/nut00/mod.rs index b81ee228..9ea95787 100644 --- a/crates/cdk/src/nuts/nut00/mod.rs +++ b/crates/cdk/src/nuts/nut00/mod.rs @@ -312,7 +312,7 @@ where } /// Currency Unit -#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Default)] pub enum CurrencyUnit { /// Sat #[default] diff --git a/crates/cdk/src/wallet/multi_mint_wallet.rs b/crates/cdk/src/wallet/multi_mint_wallet.rs index 89fc75ee..5f31c07d 100644 --- a/crates/cdk/src/wallet/multi_mint_wallet.rs +++ b/crates/cdk/src/wallet/multi_mint_wallet.rs @@ -2,7 +2,7 @@ //! //! Wrapper around core [`Wallet`] that enables the use of multiple mint unit pairs -use std::collections::HashMap; +use std::collections::{BTreeMap, HashMap}; use std::fmt; use std::str::FromStr; use std::sync::Arc; @@ -24,11 +24,11 @@ use crate::{Amount, Wallet}; #[derive(Debug, Clone)] pub struct MultiMintWallet { /// Wallets - pub wallets: Arc>>, + pub wallets: Arc>>, } /// Wallet Key -#[derive(Debug, Clone, Hash, PartialEq, Eq, Serialize, Deserialize)] +#[derive(Debug, Clone, Hash, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)] pub struct WalletKey { mint_url: MintUrl, unit: CurrencyUnit, @@ -103,8 +103,8 @@ impl MultiMintWallet { pub async fn get_balances( &self, unit: &CurrencyUnit, - ) -> Result, Error> { - let mut balances = HashMap::new(); + ) -> Result, Error> { + let mut balances = BTreeMap::new(); for (WalletKey { mint_url, unit: u }, wallet) in self.wallets.lock().await.iter() { if unit == u {