Add a checked version of weight mul fee_rate
This commit is contained in:
parent
ff08caf17c
commit
b03c24db8c
|
@ -79,6 +79,14 @@ impl FeeRate {
|
||||||
///
|
///
|
||||||
/// Computes `self / rhs` returning `None` if `rhs == 0`.
|
/// Computes `self / rhs` returning `None` if `rhs == 0`.
|
||||||
pub fn checked_div(self, rhs: u64) -> Option<Self> { self.0.checked_div(rhs).map(Self) }
|
pub fn checked_div(self, rhs: u64) -> Option<Self> { self.0.checked_div(rhs).map(Self) }
|
||||||
|
|
||||||
|
/// Checked weight multiplication.
|
||||||
|
///
|
||||||
|
/// Computes `self * rhs` where rhs is of type Weight. `None` is returned if an overflow
|
||||||
|
/// occured.
|
||||||
|
pub fn checked_mul_by_weight(self, rhs: Weight) -> Option<Amount> {
|
||||||
|
self.0.checked_mul(rhs.to_wu()).map(Amount::from_sat)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Alternative will display the unit.
|
/// Alternative will display the unit.
|
||||||
|
@ -173,6 +181,16 @@ mod tests {
|
||||||
assert!(fee_rate.is_none());
|
assert!(fee_rate.is_none());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn checked_weight_mul_test() {
|
||||||
|
let weight = Weight::from_wu(10);
|
||||||
|
let fee: Amount = FeeRate(10).checked_mul_by_weight(weight).expect("expected Amount");
|
||||||
|
assert_eq!(Amount::from_sat(100), fee);
|
||||||
|
|
||||||
|
let fee = FeeRate(10).checked_mul_by_weight(Weight::MAX);
|
||||||
|
assert!(fee.is_none());
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn checked_div_test() {
|
fn checked_div_test() {
|
||||||
let fee_rate = FeeRate(10).checked_div(10).expect("expected feerate in sat/kwu");
|
let fee_rate = FeeRate(10).checked_div(10).expect("expected feerate in sat/kwu");
|
||||||
|
|
Loading…
Reference in New Issue