Do nothing for zero imbalances (#4089)

This commit is contained in:
Gavin Wood
2019-11-12 09:42:32 +01:00
committed by GitHub
parent bff16d906d
commit c91d42712a
5 changed files with 61 additions and 14 deletions
+14 -2
View File
@@ -153,7 +153,7 @@ use codec::{Codec, Encode, Decode};
use support::{
StorageValue, Parameter, decl_event, decl_storage, decl_module,
traits::{
UpdateBalanceOutcome, Currency, OnFreeBalanceZero, OnUnbalanced,
UpdateBalanceOutcome, Currency, OnFreeBalanceZero, OnUnbalanced, TryDrop,
WithdrawReason, WithdrawReasons, LockIdentifier, LockableCurrency, ExistenceRequirement,
Imbalance, SignedImbalance, ReservableCurrency, Get,
},
@@ -603,7 +603,7 @@ impl<T: Trait<I>, I: Instance> Module<T, I> {
mod imbalances {
use super::{
result, Subtrait, DefaultInstance, Imbalance, Trait, Zero, Instance, Saturating,
StorageValue,
StorageValue, TryDrop,
};
use rstd::mem;
@@ -631,6 +631,12 @@ mod imbalances {
}
}
impl<T: Trait<I>, I: Instance> TryDrop for PositiveImbalance<T, I> {
fn try_drop(self) -> result::Result<(), Self> {
self.drop_zero()
}
}
impl<T: Trait<I>, I: Instance> Imbalance<T::Balance> for PositiveImbalance<T, I> {
type Opposite = NegativeImbalance<T, I>;
@@ -676,6 +682,12 @@ mod imbalances {
}
}
impl<T: Trait<I>, I: Instance> TryDrop for NegativeImbalance<T, I> {
fn try_drop(self) -> result::Result<(), Self> {
self.drop_zero()
}
}
impl<T: Trait<I>, I: Instance> Imbalance<T::Balance> for NegativeImbalance<T, I> {
type Opposite = PositiveImbalance<T, I>;