Struct frame_support::dispatch::PerDispatchClass
source · pub struct PerDispatchClass<T> { /* private fields */ }
Expand description
A struct holding value for each DispatchClass
.
Implementations§
source§impl<T> PerDispatchClass<T>
impl<T> PerDispatchClass<T>
sourcepub fn new(val: impl Fn(DispatchClass) -> T) -> Self
pub fn new(val: impl Fn(DispatchClass) -> T) -> Self
Create new PerDispatchClass
with the same value for every class.
sourcepub fn get_mut(&mut self, class: DispatchClass) -> &mut T
pub fn get_mut(&mut self, class: DispatchClass) -> &mut T
Get a mutable reference to current value of given class.
Examples found in repository?
src/dispatch.rs (line 419)
417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453
pub fn set(&mut self, new: T, class: impl OneOrMany<DispatchClass>) {
for class in class.into_iter() {
*self.get_mut(class) = new.clone();
}
}
}
impl PerDispatchClass<Weight> {
/// Returns the total weight consumed by all extrinsics in the block.
pub fn total(&self) -> Weight {
let mut sum = Weight::zero();
for class in DispatchClass::all() {
sum = sum.saturating_add(*self.get(*class));
}
sum
}
/// Add some weight of a specific dispatch class, saturating at the numeric bounds of `Weight`.
pub fn add(&mut self, weight: Weight, class: DispatchClass) {
let value = self.get_mut(class);
*value = value.saturating_add(weight);
}
/// Try to add some weight of a specific dispatch class, returning Err(()) if overflow would
/// occur.
pub fn checked_add(&mut self, weight: Weight, class: DispatchClass) -> Result<(), ()> {
let value = self.get_mut(class);
*value = value.checked_add(&weight).ok_or(())?;
Ok(())
}
/// Subtract some weight of a specific dispatch class, saturating at the numeric bounds of
/// `Weight`.
pub fn sub(&mut self, weight: Weight, class: DispatchClass) {
let value = self.get_mut(class);
*value = value.saturating_sub(weight);
}
sourcepub fn get(&self, class: DispatchClass) -> &T
pub fn get(&self, class: DispatchClass) -> &T
Get current value for given class.
source§impl<T: Clone> PerDispatchClass<T>
impl<T: Clone> PerDispatchClass<T>
sourcepub fn set(&mut self, new: T, class: impl OneOrMany<DispatchClass>)
pub fn set(&mut self, new: T, class: impl OneOrMany<DispatchClass>)
Set the value of given class.
source§impl PerDispatchClass<Weight>
impl PerDispatchClass<Weight>
sourcepub fn total(&self) -> Weight
pub fn total(&self) -> Weight
Returns the total weight consumed by all extrinsics in the block.
sourcepub fn add(&mut self, weight: Weight, class: DispatchClass)
pub fn add(&mut self, weight: Weight, class: DispatchClass)
Add some weight of a specific dispatch class, saturating at the numeric bounds of Weight
.
sourcepub fn checked_add(
&mut self,
weight: Weight,
class: DispatchClass
) -> Result<(), ()>
pub fn checked_add(
&mut self,
weight: Weight,
class: DispatchClass
) -> Result<(), ()>
Try to add some weight of a specific dispatch class, returning Err(()) if overflow would occur.
sourcepub fn sub(&mut self, weight: Weight, class: DispatchClass)
pub fn sub(&mut self, weight: Weight, class: DispatchClass)
Subtract some weight of a specific dispatch class, saturating at the numeric bounds of
Weight
.
Trait Implementations§
source§impl<T: Clone> Clone for PerDispatchClass<T>
impl<T: Clone> Clone for PerDispatchClass<T>
source§fn clone(&self) -> PerDispatchClass<T>
fn clone(&self) -> PerDispatchClass<T>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<T> Debug for PerDispatchClass<T>where
T: Debug,
impl<T> Debug for PerDispatchClass<T>where
T: Debug,
source§impl<T> Decode for PerDispatchClass<T>where
T: Decode,
impl<T> Decode for PerDispatchClass<T>where
T: Decode,
source§impl<T: Default> Default for PerDispatchClass<T>
impl<T: Default> Default for PerDispatchClass<T>
source§fn default() -> PerDispatchClass<T>
fn default() -> PerDispatchClass<T>
Returns the “default value” for a type. Read more
source§impl<T> Encode for PerDispatchClass<T>where
T: Encode,
impl<T> Encode for PerDispatchClass<T>where
T: Encode,
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
)
Convert self to a slice and append it to the destination.
source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
If possible give a hint of expected size of the encoding. Read more
source§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,
Convert self to a slice and then invoke the given closure with it.
source§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
Calculates the encoded size. Read more
source§impl<T> MaxEncodedLen for PerDispatchClass<T>where
T: MaxEncodedLen,
impl<T> MaxEncodedLen for PerDispatchClass<T>where
T: MaxEncodedLen,
source§fn max_encoded_len() -> usize
fn max_encoded_len() -> usize
Upper bound, in bytes, of the maximum encoded size of this item.
source§impl<T: PartialEq> PartialEq<PerDispatchClass<T>> for PerDispatchClass<T>
impl<T: PartialEq> PartialEq<PerDispatchClass<T>> for PerDispatchClass<T>
source§fn eq(&self, other: &PerDispatchClass<T>) -> bool
fn eq(&self, other: &PerDispatchClass<T>) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl<T> TypeInfo for PerDispatchClass<T>where
T: TypeInfo + 'static,
impl<T> TypeInfo for PerDispatchClass<T>where
T: TypeInfo + 'static,
impl<T> EncodeLike<PerDispatchClass<T>> for PerDispatchClass<T>where
T: Encode,
impl<T: Eq> Eq for PerDispatchClass<T>
impl<T> StructuralEq for PerDispatchClass<T>
impl<T> StructuralPartialEq for PerDispatchClass<T>
Auto Trait Implementations§
impl<T> RefUnwindSafe for PerDispatchClass<T>where
T: RefUnwindSafe,
impl<T> Send for PerDispatchClass<T>where
T: Send,
impl<T> Sync for PerDispatchClass<T>where
T: Sync,
impl<T> Unpin for PerDispatchClass<T>where
T: Unpin,
impl<T> UnwindSafe for PerDispatchClass<T>where
T: UnwindSafe,
Blanket Implementations§
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
source§impl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere
T: Decode,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.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
Compare self to
key
and return true
if they are equal.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>,
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>,
Consume self to return an equivalent value of
T
. Read moresource§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
The counterpart to
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
Consume self to return an equivalent value of
T
.