Skip to content

Commit ed219e2

Browse files
committed
fix: don't return default 1.0 feerate if not found by convert_fee_rate
1 parent 6002aea commit ed219e2

File tree

1 file changed

+8
-11
lines changed

1 file changed

+8
-11
lines changed

src/lib.rs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -88,17 +88,14 @@ pub use r#async::AsyncClient;
8888

8989
/// Get a fee value in sats/vbytes from the estimates
9090
/// that matches the confirmation target set as parameter.
91-
pub fn convert_fee_rate(target: usize, estimates: HashMap<u16, f64>) -> Result<f32, Error> {
92-
let fee_val = {
93-
let mut pairs = estimates.into_iter().collect::<Vec<(u16, f64)>>();
94-
pairs.sort_unstable_by_key(|(k, _)| std::cmp::Reverse(*k));
95-
pairs
96-
.into_iter()
97-
.find(|(k, _)| *k as usize <= target)
98-
.map(|(_, v)| v)
99-
.unwrap_or(1.0)
100-
};
101-
Ok(fee_val as f32)
91+
///
92+
/// Returns `None` if no feerate estimate is found at or below `target` confirmations.
93+
pub fn convert_fee_rate(target: usize, estimates: HashMap<u16, f64>) -> Option<f32> {
94+
estimates
95+
.into_iter()
96+
.filter(|(k, _)| *k as usize <= target)
97+
.max_by_key(|(k, _)| *k)
98+
.map(|(_, v)| v as f32)
10299
}
103100

104101
#[derive(Debug, Clone)]

0 commit comments

Comments
 (0)