Remove u32_trait (#10850)

* Remove `u32_trait`

This trait only existed because there wasn't any const generic support at time of creation. However,
we now have support for it :)

* FMT
This commit is contained in:
Bastian Köcher
2022-02-14 21:12:25 +01:00
committed by GitHub
parent 888131b651
commit fdd49f072c
6 changed files with 39 additions and 620 deletions
+13 -17
View File
@@ -53,11 +53,7 @@ pub use pallet_transaction_payment::{CurrencyAdapter, Multiplier, TargetedFeeAdj
use pallet_transaction_payment::{FeeDetails, RuntimeDispatchInfo};
use sp_api::impl_runtime_apis;
use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId;
use sp_core::{
crypto::KeyTypeId,
u32_trait::{_1, _2, _3, _4, _5},
OpaqueMetadata,
};
use sp_core::{crypto::KeyTypeId, OpaqueMetadata};
use sp_inherents::{CheckInherentsResult, InherentData};
use sp_runtime::{
create_runtime_str,
@@ -550,7 +546,7 @@ impl pallet_staking::Config for Runtime {
/// A super-majority of the council can cancel the slash.
type SlashCancelOrigin = EnsureOneOf<
EnsureRoot<AccountId>,
pallet_collective::EnsureProportionAtLeast<_3, _4, AccountId, CouncilCollective>,
pallet_collective::EnsureProportionAtLeast<AccountId, CouncilCollective, 3, 4>,
>;
type SessionInterface = Self;
type EraPayout = pallet_staking::ConvertCurve<RewardCurve>;
@@ -796,30 +792,30 @@ impl pallet_democracy::Config for Runtime {
type MinimumDeposit = MinimumDeposit;
/// A straight majority of the council can decide what their next motion is.
type ExternalOrigin =
pallet_collective::EnsureProportionAtLeast<_1, _2, AccountId, CouncilCollective>;
pallet_collective::EnsureProportionAtLeast<AccountId, CouncilCollective, 1, 2>;
/// A super-majority can have the next scheduled referendum be a straight majority-carries vote.
type ExternalMajorityOrigin =
pallet_collective::EnsureProportionAtLeast<_3, _4, AccountId, CouncilCollective>;
pallet_collective::EnsureProportionAtLeast<AccountId, CouncilCollective, 3, 4>;
/// A unanimous council can have the next scheduled referendum be a straight default-carries
/// (NTB) vote.
type ExternalDefaultOrigin =
pallet_collective::EnsureProportionAtLeast<_1, _1, AccountId, CouncilCollective>;
pallet_collective::EnsureProportionAtLeast<AccountId, CouncilCollective, 1, 1>;
/// Two thirds of the technical committee can have an ExternalMajority/ExternalDefault vote
/// be tabled immediately and with a shorter voting/enactment period.
type FastTrackOrigin =
pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, TechnicalCollective>;
pallet_collective::EnsureProportionAtLeast<AccountId, TechnicalCollective, 2, 3>;
type InstantOrigin =
pallet_collective::EnsureProportionAtLeast<_1, _1, AccountId, TechnicalCollective>;
pallet_collective::EnsureProportionAtLeast<AccountId, TechnicalCollective, 1, 1>;
type InstantAllowed = frame_support::traits::ConstBool<true>;
type FastTrackVotingPeriod = FastTrackVotingPeriod;
// To cancel a proposal which has been passed, 2/3 of the council must agree to it.
type CancellationOrigin =
pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, CouncilCollective>;
pallet_collective::EnsureProportionAtLeast<AccountId, CouncilCollective, 2, 3>;
// To cancel a proposal before it has been passed, the technical committee must be unanimous or
// Root must agree.
type CancelProposalOrigin = EnsureOneOf<
EnsureRoot<AccountId>,
pallet_collective::EnsureProportionAtLeast<_1, _1, AccountId, TechnicalCollective>,
pallet_collective::EnsureProportionAtLeast<AccountId, TechnicalCollective, 1, 1>,
>;
type BlacklistOrigin = EnsureRoot<AccountId>;
// Any single technical committee member may veto a coming council proposal, however they can
@@ -909,7 +905,7 @@ impl pallet_collective::Config<TechnicalCollective> for Runtime {
type EnsureRootOrHalfCouncil = EnsureOneOf<
EnsureRoot<AccountId>,
pallet_collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective>,
pallet_collective::EnsureProportionMoreThan<AccountId, CouncilCollective, 1, 2>,
>;
impl pallet_membership::Config<pallet_membership::Instance1> for Runtime {
type Event = Event;
@@ -951,11 +947,11 @@ impl pallet_treasury::Config for Runtime {
type Currency = Balances;
type ApproveOrigin = EnsureOneOf<
EnsureRoot<AccountId>,
pallet_collective::EnsureProportionAtLeast<_3, _5, AccountId, CouncilCollective>,
pallet_collective::EnsureProportionAtLeast<AccountId, CouncilCollective, 3, 5>,
>;
type RejectOrigin = EnsureOneOf<
EnsureRoot<AccountId>,
pallet_collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective>,
pallet_collective::EnsureProportionMoreThan<AccountId, CouncilCollective, 1, 2>,
>;
type Event = Event;
type OnSlash = ();
@@ -1226,7 +1222,7 @@ impl pallet_society::Config for Runtime {
type RotationPeriod = RotationPeriod;
type MaxLockDuration = MaxLockDuration;
type FounderSetOrigin =
pallet_collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective>;
pallet_collective::EnsureProportionMoreThan<AccountId, CouncilCollective, 1, 2>;
type SuspensionJudgementOrigin = pallet_society::EnsureFounder<Runtime>;
type MaxCandidateIntake = MaxCandidateIntake;
type ChallengePeriod = ChallengePeriod;
+17 -18
View File
@@ -43,7 +43,6 @@
#![recursion_limit = "128"]
use scale_info::TypeInfo;
use sp_core::u32_trait::Value as U32;
use sp_io::storage;
use sp_runtime::{traits::Hash, RuntimeDebug};
use sp_std::{marker::PhantomData, prelude::*, result};
@@ -1011,43 +1010,43 @@ impl<
}
}
pub struct EnsureMembers<N: U32, AccountId, I: 'static>(PhantomData<(N, AccountId, I)>);
pub struct EnsureMembers<AccountId, I: 'static, const N: u32>(PhantomData<(AccountId, I)>);
impl<
O: Into<Result<RawOrigin<AccountId, I>, O>> + From<RawOrigin<AccountId, I>>,
N: U32,
AccountId,
I,
> EnsureOrigin<O> for EnsureMembers<N, AccountId, I>
const N: u32,
> EnsureOrigin<O> for EnsureMembers<AccountId, I, N>
{
type Success = (MemberCount, MemberCount);
fn try_origin(o: O) -> Result<Self::Success, O> {
o.into().and_then(|o| match o {
RawOrigin::Members(n, m) if n >= N::VALUE => Ok((n, m)),
RawOrigin::Members(n, m) if n >= N => Ok((n, m)),
r => Err(O::from(r)),
})
}
#[cfg(feature = "runtime-benchmarks")]
fn successful_origin() -> O {
O::from(RawOrigin::Members(N::VALUE, N::VALUE))
O::from(RawOrigin::Members(N, N))
}
}
pub struct EnsureProportionMoreThan<N: U32, D: U32, AccountId, I: 'static>(
PhantomData<(N, D, AccountId, I)>,
pub struct EnsureProportionMoreThan<AccountId, I: 'static, const N: u32, const D: u32>(
PhantomData<(AccountId, I)>,
);
impl<
O: Into<Result<RawOrigin<AccountId, I>, O>> + From<RawOrigin<AccountId, I>>,
N: U32,
D: U32,
AccountId,
I,
> EnsureOrigin<O> for EnsureProportionMoreThan<N, D, AccountId, I>
const N: u32,
const D: u32,
> EnsureOrigin<O> for EnsureProportionMoreThan<AccountId, I, N, D>
{
type Success = ();
fn try_origin(o: O) -> Result<Self::Success, O> {
o.into().and_then(|o| match o {
RawOrigin::Members(n, m) if n * D::VALUE > N::VALUE * m => Ok(()),
RawOrigin::Members(n, m) if n * D > N * m => Ok(()),
r => Err(O::from(r)),
})
}
@@ -1058,21 +1057,21 @@ impl<
}
}
pub struct EnsureProportionAtLeast<N: U32, D: U32, AccountId, I: 'static>(
PhantomData<(N, D, AccountId, I)>,
pub struct EnsureProportionAtLeast<AccountId, I: 'static, const N: u32, const D: u32>(
PhantomData<(AccountId, I)>,
);
impl<
O: Into<Result<RawOrigin<AccountId, I>, O>> + From<RawOrigin<AccountId, I>>,
N: U32,
D: U32,
AccountId,
I,
> EnsureOrigin<O> for EnsureProportionAtLeast<N, D, AccountId, I>
const N: u32,
const D: u32,
> EnsureOrigin<O> for EnsureProportionAtLeast<AccountId, I, N, D>
{
type Success = ();
fn try_origin(o: O) -> Result<Self::Success, O> {
o.into().and_then(|o| match o {
RawOrigin::Members(n, m) if n * D::VALUE >= N::VALUE * m => Ok(()),
RawOrigin::Members(n, m) if n * D >= N * m => Ok(()),
r => Err(O::from(r)),
})
}
+2 -5
View File
@@ -24,10 +24,7 @@ use frame_support::{
Hashable,
};
use frame_system::{EventRecord, Phase};
use sp_core::{
u32_trait::{_3, _4},
H256,
};
use sp_core::H256;
use sp_runtime::{
testing::Header,
traits::{BlakeTwo256, IdentityLookup},
@@ -142,7 +139,7 @@ impl Config<Instance2> for Test {
}
impl mock_democracy::Config for Test {
type Event = Event;
type ExternalMajorityOrigin = EnsureProportionAtLeast<_3, _4, u64, Instance1>;
type ExternalMajorityOrigin = EnsureProportionAtLeast<u64, Instance1, 3, 4>;
}
impl Config for Test {
type Origin = Origin;
@@ -18,27 +18,26 @@
//! Means for splitting an imbalance into two and hanlding them differently.
use super::super::imbalance::{Imbalance, OnUnbalanced};
use sp_core::u32_trait::Value as U32;
use sp_runtime::traits::Saturating;
use sp_std::{marker::PhantomData, ops::Div};
/// Split an unbalanced amount two ways between a common divisor.
pub struct SplitTwoWays<Balance, Imbalance, Part1, Target1, Part2, Target2>(
PhantomData<(Balance, Imbalance, Part1, Target1, Part2, Target2)>,
pub struct SplitTwoWays<Balance, Imbalance, Target1, Target2, const PART1: u32, const PART2: u32>(
PhantomData<(Balance, Imbalance, Target1, Target2)>,
);
impl<
Balance: From<u32> + Saturating + Div<Output = Balance>,
I: Imbalance<Balance>,
Part1: U32,
Target1: OnUnbalanced<I>,
Part2: U32,
Target2: OnUnbalanced<I>,
> OnUnbalanced<I> for SplitTwoWays<Balance, I, Part1, Target1, Part2, Target2>
const PART1: u32,
const PART2: u32,
> OnUnbalanced<I> for SplitTwoWays<Balance, I, Target1, Target2, PART1, PART2>
{
fn on_nonzero_unbalanced(amount: I) {
let total: u32 = Part1::VALUE + Part2::VALUE;
let amount1 = amount.peek().saturating_mul(Part1::VALUE.into()) / total.into();
let total: u32 = PART1 + PART2;
let amount1 = amount.peek().saturating_mul(PART1.into()) / total.into();
let (imb1, imb2) = amount.split(amount1);
Target1::on_unbalanced(imb1);
Target2::on_unbalanced(imb2);
-2
View File
@@ -56,8 +56,6 @@ pub use hashing::{blake2_128, blake2_256, keccak_256, twox_128, twox_256, twox_6
pub mod crypto;
pub mod hexdisplay;
pub mod u32_trait;
pub mod ecdsa;
pub mod ed25519;
pub mod hash;
-570
View File
@@ -1,570 +0,0 @@
// This file is part of Substrate.
// Copyright (C) 2017-2022 Parity Technologies (UK) Ltd.
// SPDX-License-Identifier: Apache-2.0
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//! An u32 trait with "values" as impl'd types.
/// A u32 value, wrapped in a trait because we don't yet have const generics.
pub trait Value {
/// The actual value represented by the impl'ing type.
const VALUE: u32;
}
/// Type representing the value 0 for the `Value` trait.
pub struct _0;
impl Value for _0 {
const VALUE: u32 = 0;
}
/// Type representing the value 1 for the `Value` trait.
pub struct _1;
impl Value for _1 {
const VALUE: u32 = 1;
}
/// Type representing the value 2 for the `Value` trait.
pub struct _2;
impl Value for _2 {
const VALUE: u32 = 2;
}
/// Type representing the value 3 for the `Value` trait.
pub struct _3;
impl Value for _3 {
const VALUE: u32 = 3;
}
/// Type representing the value 4 for the `Value` trait.
pub struct _4;
impl Value for _4 {
const VALUE: u32 = 4;
}
/// Type representing the value 5 for the `Value` trait.
pub struct _5;
impl Value for _5 {
const VALUE: u32 = 5;
}
/// Type representing the value 6 for the `Value` trait.
pub struct _6;
impl Value for _6 {
const VALUE: u32 = 6;
}
/// Type representing the value 7 for the `Value` trait.
pub struct _7;
impl Value for _7 {
const VALUE: u32 = 7;
}
/// Type representing the value 8 for the `Value` trait.
pub struct _8;
impl Value for _8 {
const VALUE: u32 = 8;
}
/// Type representing the value 9 for the `Value` trait.
pub struct _9;
impl Value for _9 {
const VALUE: u32 = 9;
}
/// Type representing the value 10 for the `Value` trait.
pub struct _10;
impl Value for _10 {
const VALUE: u32 = 10;
}
/// Type representing the value 11 for the `Value` trait.
pub struct _11;
impl Value for _11 {
const VALUE: u32 = 11;
}
/// Type representing the value 12 for the `Value` trait.
pub struct _12;
impl Value for _12 {
const VALUE: u32 = 12;
}
/// Type representing the value 13 for the `Value` trait.
pub struct _13;
impl Value for _13 {
const VALUE: u32 = 13;
}
/// Type representing the value 14 for the `Value` trait.
pub struct _14;
impl Value for _14 {
const VALUE: u32 = 14;
}
/// Type representing the value 15 for the `Value` trait.
pub struct _15;
impl Value for _15 {
const VALUE: u32 = 15;
}
/// Type representing the value 16 for the `Value` trait.
pub struct _16;
impl Value for _16 {
const VALUE: u32 = 16;
}
/// Type representing the value 17 for the `Value` trait.
pub struct _17;
impl Value for _17 {
const VALUE: u32 = 17;
}
/// Type representing the value 18 for the `Value` trait.
pub struct _18;
impl Value for _18 {
const VALUE: u32 = 18;
}
/// Type representing the value 19 for the `Value` trait.
pub struct _19;
impl Value for _19 {
const VALUE: u32 = 19;
}
/// Type representing the value 20 for the `Value` trait.
pub struct _20;
impl Value for _20 {
const VALUE: u32 = 20;
}
/// Type representing the value 21 for the `Value` trait.
pub struct _21;
impl Value for _21 {
const VALUE: u32 = 21;
}
/// Type representing the value 22 for the `Value` trait.
pub struct _22;
impl Value for _22 {
const VALUE: u32 = 22;
}
/// Type representing the value 23 for the `Value` trait.
pub struct _23;
impl Value for _23 {
const VALUE: u32 = 23;
}
/// Type representing the value 24 for the `Value` trait.
pub struct _24;
impl Value for _24 {
const VALUE: u32 = 24;
}
/// Type representing the value 25 for the `Value` trait.
pub struct _25;
impl Value for _25 {
const VALUE: u32 = 25;
}
/// Type representing the value 26 for the `Value` trait.
pub struct _26;
impl Value for _26 {
const VALUE: u32 = 26;
}
/// Type representing the value 27 for the `Value` trait.
pub struct _27;
impl Value for _27 {
const VALUE: u32 = 27;
}
/// Type representing the value 28 for the `Value` trait.
pub struct _28;
impl Value for _28 {
const VALUE: u32 = 28;
}
/// Type representing the value 29 for the `Value` trait.
pub struct _29;
impl Value for _29 {
const VALUE: u32 = 29;
}
/// Type representing the value 30 for the `Value` trait.
pub struct _30;
impl Value for _30 {
const VALUE: u32 = 30;
}
/// Type representing the value 31 for the `Value` trait.
pub struct _31;
impl Value for _31 {
const VALUE: u32 = 31;
}
/// Type representing the value 32 for the `Value` trait.
pub struct _32;
impl Value for _32 {
const VALUE: u32 = 32;
}
/// Type representing the value 33 for the `Value` trait.
pub struct _33;
impl Value for _33 {
const VALUE: u32 = 33;
}
/// Type representing the value 34 for the `Value` trait.
pub struct _34;
impl Value for _34 {
const VALUE: u32 = 34;
}
/// Type representing the value 35 for the `Value` trait.
pub struct _35;
impl Value for _35 {
const VALUE: u32 = 35;
}
/// Type representing the value 36 for the `Value` trait.
pub struct _36;
impl Value for _36 {
const VALUE: u32 = 36;
}
/// Type representing the value 37 for the `Value` trait.
pub struct _37;
impl Value for _37 {
const VALUE: u32 = 37;
}
/// Type representing the value 38 for the `Value` trait.
pub struct _38;
impl Value for _38 {
const VALUE: u32 = 38;
}
/// Type representing the value 39 for the `Value` trait.
pub struct _39;
impl Value for _39 {
const VALUE: u32 = 39;
}
/// Type representing the value 40 for the `Value` trait.
pub struct _40;
impl Value for _40 {
const VALUE: u32 = 40;
}
/// Type representing the value 41 for the `Value` trait.
pub struct _41;
impl Value for _41 {
const VALUE: u32 = 41;
}
/// Type representing the value 42 for the `Value` trait.
pub struct _42;
impl Value for _42 {
const VALUE: u32 = 42;
}
/// Type representing the value 43 for the `Value` trait.
pub struct _43;
impl Value for _43 {
const VALUE: u32 = 43;
}
/// Type representing the value 44 for the `Value` trait.
pub struct _44;
impl Value for _44 {
const VALUE: u32 = 44;
}
/// Type representing the value 45 for the `Value` trait.
pub struct _45;
impl Value for _45 {
const VALUE: u32 = 45;
}
/// Type representing the value 46 for the `Value` trait.
pub struct _46;
impl Value for _46 {
const VALUE: u32 = 46;
}
/// Type representing the value 47 for the `Value` trait.
pub struct _47;
impl Value for _47 {
const VALUE: u32 = 47;
}
/// Type representing the value 48 for the `Value` trait.
pub struct _48;
impl Value for _48 {
const VALUE: u32 = 48;
}
/// Type representing the value 49 for the `Value` trait.
pub struct _49;
impl Value for _49 {
const VALUE: u32 = 49;
}
/// Type representing the value 50 for the `Value` trait.
pub struct _50;
impl Value for _50 {
const VALUE: u32 = 50;
}
/// Type representing the value 51 for the `Value` trait.
pub struct _51;
impl Value for _51 {
const VALUE: u32 = 51;
}
/// Type representing the value 52 for the `Value` trait.
pub struct _52;
impl Value for _52 {
const VALUE: u32 = 52;
}
/// Type representing the value 53 for the `Value` trait.
pub struct _53;
impl Value for _53 {
const VALUE: u32 = 53;
}
/// Type representing the value 54 for the `Value` trait.
pub struct _54;
impl Value for _54 {
const VALUE: u32 = 54;
}
/// Type representing the value 55 for the `Value` trait.
pub struct _55;
impl Value for _55 {
const VALUE: u32 = 55;
}
/// Type representing the value 56 for the `Value` trait.
pub struct _56;
impl Value for _56 {
const VALUE: u32 = 56;
}
/// Type representing the value 57 for the `Value` trait.
pub struct _57;
impl Value for _57 {
const VALUE: u32 = 57;
}
/// Type representing the value 58 for the `Value` trait.
pub struct _58;
impl Value for _58 {
const VALUE: u32 = 58;
}
/// Type representing the value 59 for the `Value` trait.
pub struct _59;
impl Value for _59 {
const VALUE: u32 = 59;
}
/// Type representing the value 60 for the `Value` trait.
pub struct _60;
impl Value for _60 {
const VALUE: u32 = 60;
}
/// Type representing the value 61 for the `Value` trait.
pub struct _61;
impl Value for _61 {
const VALUE: u32 = 61;
}
/// Type representing the value 62 for the `Value` trait.
pub struct _62;
impl Value for _62 {
const VALUE: u32 = 62;
}
/// Type representing the value 63 for the `Value` trait.
pub struct _63;
impl Value for _63 {
const VALUE: u32 = 63;
}
/// Type representing the value 64 for the `Value` trait.
pub struct _64;
impl Value for _64 {
const VALUE: u32 = 64;
}
/// Type representing the value 65 for the `Value` trait.
pub struct _65;
impl Value for _65 {
const VALUE: u32 = 65;
}
/// Type representing the value 66 for the `Value` trait.
pub struct _66;
impl Value for _66 {
const VALUE: u32 = 66;
}
/// Type representing the value 67 for the `Value` trait.
pub struct _67;
impl Value for _67 {
const VALUE: u32 = 67;
}
/// Type representing the value 68 for the `Value` trait.
pub struct _68;
impl Value for _68 {
const VALUE: u32 = 68;
}
/// Type representing the value 69 for the `Value` trait.
pub struct _69;
impl Value for _69 {
const VALUE: u32 = 69;
}
/// Type representing the value 70 for the `Value` trait.
pub struct _70;
impl Value for _70 {
const VALUE: u32 = 70;
}
/// Type representing the value 71 for the `Value` trait.
pub struct _71;
impl Value for _71 {
const VALUE: u32 = 71;
}
/// Type representing the value 72 for the `Value` trait.
pub struct _72;
impl Value for _72 {
const VALUE: u32 = 72;
}
/// Type representing the value 73 for the `Value` trait.
pub struct _73;
impl Value for _73 {
const VALUE: u32 = 73;
}
/// Type representing the value 74 for the `Value` trait.
pub struct _74;
impl Value for _74 {
const VALUE: u32 = 74;
}
/// Type representing the value 75 for the `Value` trait.
pub struct _75;
impl Value for _75 {
const VALUE: u32 = 75;
}
/// Type representing the value 76 for the `Value` trait.
pub struct _76;
impl Value for _76 {
const VALUE: u32 = 76;
}
/// Type representing the value 77 for the `Value` trait.
pub struct _77;
impl Value for _77 {
const VALUE: u32 = 77;
}
/// Type representing the value 78 for the `Value` trait.
pub struct _78;
impl Value for _78 {
const VALUE: u32 = 78;
}
/// Type representing the value 79 for the `Value` trait.
pub struct _79;
impl Value for _79 {
const VALUE: u32 = 79;
}
/// Type representing the value 80 for the `Value` trait.
pub struct _80;
impl Value for _80 {
const VALUE: u32 = 80;
}
/// Type representing the value 81 for the `Value` trait.
pub struct _81;
impl Value for _81 {
const VALUE: u32 = 81;
}
/// Type representing the value 82 for the `Value` trait.
pub struct _82;
impl Value for _82 {
const VALUE: u32 = 82;
}
/// Type representing the value 83 for the `Value` trait.
pub struct _83;
impl Value for _83 {
const VALUE: u32 = 83;
}
/// Type representing the value 84 for the `Value` trait.
pub struct _84;
impl Value for _84 {
const VALUE: u32 = 84;
}
/// Type representing the value 85 for the `Value` trait.
pub struct _85;
impl Value for _85 {
const VALUE: u32 = 85;
}
/// Type representing the value 86 for the `Value` trait.
pub struct _86;
impl Value for _86 {
const VALUE: u32 = 86;
}
/// Type representing the value 87 for the `Value` trait.
pub struct _87;
impl Value for _87 {
const VALUE: u32 = 87;
}
/// Type representing the value 88 for the `Value` trait.
pub struct _88;
impl Value for _88 {
const VALUE: u32 = 88;
}
/// Type representing the value 89 for the `Value` trait.
pub struct _89;
impl Value for _89 {
const VALUE: u32 = 89;
}
/// Type representing the value 90 for the `Value` trait.
pub struct _90;
impl Value for _90 {
const VALUE: u32 = 90;
}
/// Type representing the value 91 for the `Value` trait.
pub struct _91;
impl Value for _91 {
const VALUE: u32 = 91;
}
/// Type representing the value 92 for the `Value` trait.
pub struct _92;
impl Value for _92 {
const VALUE: u32 = 92;
}
/// Type representing the value 93 for the `Value` trait.
pub struct _93;
impl Value for _93 {
const VALUE: u32 = 93;
}
/// Type representing the value 94 for the `Value` trait.
pub struct _94;
impl Value for _94 {
const VALUE: u32 = 94;
}
/// Type representing the value 95 for the `Value` trait.
pub struct _95;
impl Value for _95 {
const VALUE: u32 = 95;
}
/// Type representing the value 96 for the `Value` trait.
pub struct _96;
impl Value for _96 {
const VALUE: u32 = 96;
}
/// Type representing the value 97 for the `Value` trait.
pub struct _97;
impl Value for _97 {
const VALUE: u32 = 97;
}
/// Type representing the value 98 for the `Value` trait.
pub struct _98;
impl Value for _98 {
const VALUE: u32 = 98;
}
/// Type representing the value 99 for the `Value` trait.
pub struct _99;
impl Value for _99 {
const VALUE: u32 = 99;
}
/// Type representing the value 100 for the `Value` trait.
pub struct _100;
impl Value for _100 {
const VALUE: u32 = 100;
}
/// Type representing the value 112 for the `Value` trait.
pub struct _112;
impl Value for _112 {
const VALUE: u32 = 112;
}
/// Type representing the value 128 for the `Value` trait.
pub struct _128;
impl Value for _128 {
const VALUE: u32 = 128;
}
/// Type representing the value 160 for the `Value` trait.
pub struct _160;
impl Value for _160 {
const VALUE: u32 = 160;
}
/// Type representing the value 192 for the `Value` trait.
pub struct _192;
impl Value for _192 {
const VALUE: u32 = 192;
}
/// Type representing the value 224 for the `Value` trait.
pub struct _224;
impl Value for _224 {
const VALUE: u32 = 224;
}
/// Type representing the value 256 for the `Value` trait.
pub struct _256;
impl Value for _256 {
const VALUE: u32 = 256;
}
/// Type representing the value 384 for the `Value` trait.
pub struct _384;
impl Value for _384 {
const VALUE: u32 = 384;
}
/// Type representing the value 512 for the `Value` trait.
pub struct _512;
impl Value for _512 {
const VALUE: u32 = 512;
}