Derive CompactAs for Perbill/mill/U128 (#3327)

* Derive CompactAs for Perbill/mill/U128

* Increment impl_version
This commit is contained in:
Andrew Jones
2019-08-07 20:48:30 +01:00
committed by Bastian Köcher
parent c32d9a17e0
commit 65a7629361
2 changed files with 5 additions and 54 deletions
+4 -53
View File
@@ -39,7 +39,7 @@ pub use runtime_io::{StorageOverlay, ChildrenStorageOverlay};
use rstd::{prelude::*, ops, convert::{TryInto, TryFrom}};
use primitives::{crypto, ed25519, sr25519, hash::{H256, H512}};
use codec::{Encode, Decode};
use codec::{Encode, Decode, CompactAs};
#[cfg(feature = "std")]
pub mod testing;
@@ -173,7 +173,7 @@ pub type ConsensusEngineId = [u8; 4];
/// Permill is parts-per-million (i.e. after multiplying by this, divide by 1000000).
#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug, Ord, PartialOrd))]
#[derive(Encode, Decode, Default, Copy, Clone, PartialEq, Eq)]
#[derive(Encode, Decode, CompactAs, Default, Copy, Clone, PartialEq, Eq)]
pub struct Permill(u32);
impl Permill {
@@ -263,26 +263,10 @@ impl From<f32> for Permill {
}
}
impl codec::CompactAs for Permill {
type As = u32;
fn encode_as(&self) -> &u32 {
&self.0
}
fn decode_from(x: u32) -> Permill {
Permill(x)
}
}
impl From<codec::Compact<Permill>> for Permill {
fn from(x: codec::Compact<Permill>) -> Permill {
x.0
}
}
/// Perbill is parts-per-billion. It stores a value between 0 and 1 in fixed point and
/// provides a means to multiply some other value by that.
#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))]
#[derive(Encode, Decode, Default, Copy, Clone, PartialEq, Eq, Ord, PartialOrd)]
#[derive(Encode, Decode, CompactAs, Default, Copy, Clone, PartialEq, Eq, Ord, PartialOrd)]
pub struct Perbill(u32);
impl Perbill {
@@ -375,23 +359,6 @@ impl From<f32> for Perbill {
}
}
impl codec::CompactAs for Perbill {
type As = u32;
fn encode_as(&self) -> &u32 {
&self.0
}
fn decode_from(x: u32) -> Perbill {
Perbill(x)
}
}
impl From<codec::Compact<Perbill>> for Perbill {
fn from(x: codec::Compact<Perbill>) -> Perbill {
x.0
}
}
/// A fixed point number by the scale of 1 billion.
///
/// cannot hold a value larger than +-`9223372036854775807 / 1_000_000_000` (~9 billion).
@@ -516,7 +483,7 @@ impl CheckedAdd for Fixed64 {
/// PerU128 is parts-per-u128-max-value. It stores a value between 0 and 1 in fixed point.
#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))]
#[derive(Encode, Decode, Default, Copy, Clone, PartialEq, Eq)]
#[derive(Encode, Decode, CompactAs, Default, Copy, Clone, PartialEq, Eq)]
pub struct PerU128(u128);
const U128: u128 = u128::max_value();
@@ -546,22 +513,6 @@ impl ::rstd::ops::Deref for PerU128 {
}
}
impl codec::CompactAs for PerU128 {
type As = u128;
fn encode_as(&self) -> &u128 {
&self.0
}
fn decode_from(x: u128) -> PerU128 {
Self(x)
}
}
impl From<codec::Compact<PerU128>> for PerU128 {
fn from(x: codec::Compact<PerU128>) -> PerU128 {
x.0
}
}
/// Signature verify that can work with any known signature types..
#[derive(Eq, PartialEq, Clone, Encode, Decode)]
#[cfg_attr(feature = "std", derive(Debug))]
+1 -1
View File
@@ -81,7 +81,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
// implementation changes and behavior does not, then leave spec_version as
// is and increment impl_version.
spec_version: 131,
impl_version: 131,
impl_version: 132,
apis: RUNTIME_API_VERSIONS,
};