impl Zero and One for fixed point numbers (#8647)

* impl Zero and One for fixed point numbers

* update librocksdb-sys to support M1

* fix build

* trigger CI
This commit is contained in:
Xiliang Chen
2021-04-23 10:02:54 +12:00
committed by GitHub
parent f7ed5a2481
commit 327934c19e
5 changed files with 39 additions and 42 deletions
@@ -57,7 +57,7 @@ pub trait FixedPointNumber:
+ Saturating + Bounded
+ Eq + PartialEq + Ord + PartialOrd
+ CheckedSub + CheckedAdd + CheckedMul + CheckedDiv
+ Add + Sub + Div + Mul
+ Add + Sub + Div + Mul + Zero + One
{
/// The underlying data type used for this fixed point number.
type Inner: Debug + One + CheckedMul + CheckedDiv + FixedPointOperand;
@@ -195,21 +195,6 @@ pub trait FixedPointNumber:
Self::one().checked_div(&self)
}
/// Returns zero.
fn zero() -> Self {
Self::from_inner(Self::Inner::zero())
}
/// Checks if the number is zero.
fn is_zero(&self) -> bool {
self.into_inner() == Self::Inner::zero()
}
/// Returns one.
fn one() -> Self {
Self::from_inner(Self::DIV)
}
/// Checks if the number is one.
fn is_one(&self) -> bool {
self.into_inner() == Self::Inner::one()
@@ -514,6 +499,22 @@ macro_rules! implement_fixed {
}
}
impl Zero for $name {
fn zero() -> Self {
Self::from_inner(<Self as FixedPointNumber>::Inner::zero())
}
fn is_zero(&self) -> bool {
self.into_inner() == <Self as FixedPointNumber>::Inner::zero()
}
}
impl One for $name {
fn one() -> Self {
Self::from_inner(Self::DIV)
}
}
impl sp_std::fmt::Debug for $name {
#[cfg(feature = "std")]
fn fmt(&self, f: &mut sp_std::fmt::Formatter) -> sp_std::fmt::Result {