Enum pallet_referenda::Curve
source · pub enum Curve {
LinearDecreasing {
length: Perbill,
floor: Perbill,
ceil: Perbill,
},
SteppedDecreasing {
begin: Perbill,
end: Perbill,
step: Perbill,
period: Perbill,
},
Reciprocal {
factor: FixedI64,
x_offset: FixedI64,
y_offset: FixedI64,
},
}Expand description
Type for describing a curve over the 2-dimensional space of axes between 0-1, as represented
by (Perbill, Perbill).
Variants§
LinearDecreasing
Linear curve starting at (0, ceil), proceeding linearly to (length, floor), then
remaining at floor until the end of the period.
SteppedDecreasing
Stepped curve, beginning at (0, begin), then remaining constant for period, at which
point it steps down to (period, begin - step). It then remains constant for another
period before stepping down to (period * 2, begin - step * 2). This pattern continues
but the y component has a lower limit of end.
Reciprocal
A recipocal (K/(x+S)-T) curve: factor is K and x_offset is S, y_offset is T.
Implementations§
source§impl Curve
impl Curve
sourcepub const fn make_linear(
length: u128,
period: u128,
floor: FixedI64,
ceil: FixedI64
) -> Curve
pub const fn make_linear( length: u128, period: u128, floor: FixedI64, ceil: FixedI64 ) -> Curve
Create a Curve::Linear instance from a high-level description.
WARNING: This is a const function designed for convenient use at build time and
will panic on overflow. Ensure that any inputs are sensible.
sourcepub const fn make_reciprocal(
delay: u128,
period: u128,
level: FixedI64,
floor: FixedI64,
ceil: FixedI64
) -> Curve
pub const fn make_reciprocal( delay: u128, period: u128, level: FixedI64, floor: FixedI64, ceil: FixedI64 ) -> Curve
Create a Curve::Reciprocal instance from a high-level description.
WARNING: This is a const function designed for convenient use at build time and
will panic on overflow. Ensure that any inputs are sensible.
sourcepub fn delay(&self, y: Perbill) -> Perbill
pub fn delay(&self, y: Perbill) -> Perbill
Determine the smallest x value such that passing returns true when passed along with
the given y value.
If passing never returns true for any value of x when paired with y, then
Perbill::one may be returned.
let c = Curve::LinearDecreasing { begin: Perbill::one(), delta: Perbill::one() };
// ^^^ Can be any curve.
let y = Perbill::from_percent(50);
// ^^^ Can be any value.
let x = c.delay(y);
assert!(c.passing(x, y));
Trait Implementations§
source§impl Decode for Curve
impl Decode for Curve
source§fn decode<__CodecInputEdqy: Input>(
__codec_input_edqy: &mut __CodecInputEdqy
) -> Result<Self, Error>
fn decode<__CodecInputEdqy: Input>( __codec_input_edqy: &mut __CodecInputEdqy ) -> Result<Self, Error>
§fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>
) -> Result<DecodeFinished, Error>where
I: Input,
fn decode_into<I>( input: &mut I, dst: &mut MaybeUninit<Self> ) -> Result<DecodeFinished, Error>where I: Input,
§fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
fn skip<I>(input: &mut I) -> Result<(), Error>where I: Input,
§fn encoded_fixed_size() -> Option<usize>
fn encoded_fixed_size() -> Option<usize>
source§impl Encode for Curve
impl Encode for Curve
source§fn encode_to<__CodecOutputEdqy: Output + ?Sized>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy
)
fn encode_to<__CodecOutputEdqy: Output + ?Sized>( &self, __codec_dest_edqy: &mut __CodecOutputEdqy )
§fn using_encoded<R, F>(&self, f: F) -> Rwhere
F: FnOnce(&[u8]) -> R,
fn using_encoded<R, F>(&self, f: F) -> Rwhere F: FnOnce(&[u8]) -> R,
§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
source§impl MaxEncodedLen for Curve
impl MaxEncodedLen for Curve
source§fn max_encoded_len() -> usize
fn max_encoded_len() -> usize
source§impl PartialEq<Curve> for Curve
impl PartialEq<Curve> for Curve
impl EncodeLike<Curve> for Curve
impl Eq for Curve
impl StructuralEq for Curve
impl StructuralPartialEq for Curve
Auto Trait Implementations§
impl RefUnwindSafe for Curve
impl Send for Curve
impl Sync for Curve
impl Unpin for Curve
impl UnwindSafe for Curve
Blanket Implementations§
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§impl<T> DecodeAll for Twhere
T: Decode,
impl<T> DecodeAll for Twhere T: Decode,
§fn decode_all(input: &mut &[u8]) -> Result<T, Error>
fn decode_all(input: &mut &[u8]) -> Result<T, Error>
Self and consume all of the given input data. Read more§impl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere T: Decode,
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
source§impl<T> Hashable for Twhere
T: Codec,
impl<T> Hashable for Twhere T: Codec,
fn blake2_128(&self) -> [u8; 16]
fn blake2_256(&self) -> [u8; 32]
fn blake2_128_concat(&self) -> Vec<u8, Global> ⓘ
fn twox_128(&self) -> [u8; 16]
fn twox_256(&self) -> [u8; 32]
fn twox_64_concat(&self) -> Vec<u8, Global> ⓘ
fn identity(&self) -> Vec<u8, Global> ⓘ
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T, Outer> IsWrappedBy<Outer> for Twhere Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,
§impl<T> KeyedVec for Twhere
T: Codec,
impl<T> KeyedVec for Twhere T: Codec,
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere Self: UniqueSaturatedFrom<T>,
source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere Self: UniqueSaturatedInto<T>,
T. Read more§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.source§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere T: UncheckedFrom<S>,
source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from.source§impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere T: Bounded, S: TryInto<T>,
source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T.