Add scale_by_witness_factor to Weight type

This commit is contained in:
yancy 2023-08-25 10:25:09 +02:00
parent 38c9e9947e
commit cb76f3ec43
1 changed files with 16 additions and 0 deletions

View File

@ -100,6 +100,13 @@ impl Weight {
///
/// Computes `self / rhs` returning `None` if `rhs == 0`.
pub fn checked_div(self, rhs: u64) -> Option<Self> { self.0.checked_div(rhs).map(Self) }
/// Scale by witness factor.
///
/// Computes `self * WITNESS_SCALE_FACTOR` returning `None` if an overflow occurred.
pub fn scale_by_witness_factor(self) -> Option<Self> {
Self::checked_mul(self, Self::WITNESS_SCALE_FACTOR)
}
}
/// Alternative will display the unit.
@ -216,6 +223,15 @@ mod tests {
let result = Weight(2).checked_div(0);
assert_eq!(None, result);
}
#[test]
fn scale_by_witness_factor() {
let result = Weight(1).scale_by_witness_factor().expect("expected weight unit");
assert_eq!(Weight(4), result);
let result = Weight::MAX.scale_by_witness_factor();
assert_eq!(None, result);
}
}
impl From<Weight> for u64 {