[][src]Struct sp_core::ChangesTrieConfiguration

pub struct ChangesTrieConfiguration {
    pub digest_interval: u32,
    pub digest_levels: u32,
}

Substrate changes trie configuration.

Fields

digest_interval: u32

Interval (in blocks) at which level1-digests are created. Digests are not created when this is less or equal to 1.

digest_levels: u32

Maximal number of digest levels in hierarchy. 0 means that digests are not created at all (even level1 digests). 1 means only level1-digests are created. 2 means that every digest_interval^2 there will be a level2-digest, and so on. Please ensure that maximum digest interval (i.e. digest_interval^digest_levels) is within u32 limits. Otherwise you'll never see digests covering such intervals && maximal digests interval will be truncated to the last interval that fits u32 limits.

Implementations

impl ChangesTrieConfiguration[src]

pub fn new(digest_interval: u32, digest_levels: u32) -> Self[src]

Create new configuration given digest interval and levels.

pub fn is_digest_build_enabled(&self) -> bool[src]

Is digest build enabled?

pub fn is_digest_build_required_at_block<Number>(
    &self,
    zero: Number,
    block: Number
) -> bool where
    Number: From<u32> + PartialEq + Rem<Output = Number> + Sub<Output = Number> + PartialOrd + Zero
[src]

Do we need to build digest at given block?

pub fn max_digest_interval(&self) -> u32[src]

Returns max digest interval. One if digests are not created at all.

pub fn prev_max_level_digest_block<Number>(
    &self,
    zero: Number,
    block: Number
) -> Option<Number> where
    Number: Clone + From<u32> + PartialOrd + PartialEq + Add<Output = Number> + Sub<Output = Number> + Div<Output = Number> + Mul<Output = Number> + Zero
[src]

Returns max level digest block number that has been created at block <= passed block number.

Returns None if digests are not created at all.

pub fn next_max_level_digest_range<Number>(
    &self,
    zero: Number,
    block: Number
) -> Option<(Number, Number)> where
    Number: Clone + From<u32> + PartialOrd + PartialEq + Add<Output = Number> + Sub<Output = Number> + Div<Output = Number> + Mul<Output = Number>, 
[src]

Returns max level digest blocks range (inclusive) which includes passed block.

Returns None if digests are not created at all. It will return the first max-level digest if block is <= zero.

pub fn digest_level_at_block<Number>(
    &self,
    zero: Number,
    block: Number
) -> Option<(u32, u32, u32)> where
    Number: Clone + From<u32> + PartialEq + Rem<Output = Number> + Sub<Output = Number> + PartialOrd + Zero
[src]

Returns Some if digest must be built at given block number. The tuple is: ( digest level digest interval (in blocks) step between blocks we're interested in when digest is built )

Trait Implementations

impl Clone for ChangesTrieConfiguration[src]

impl Debug for ChangesTrieConfiguration[src]

impl Decode for ChangesTrieConfiguration[src]

impl Default for ChangesTrieConfiguration[src]

impl<'de> Deserialize<'de> for ChangesTrieConfiguration[src]

impl Encode for ChangesTrieConfiguration[src]

impl EncodeLike<ChangesTrieConfiguration> for ChangesTrieConfiguration[src]

impl Eq for ChangesTrieConfiguration[src]

impl MallocSizeOf for ChangesTrieConfiguration[src]

impl PartialEq<ChangesTrieConfiguration> for ChangesTrieConfiguration[src]

impl Serialize for ChangesTrieConfiguration[src]

impl StructuralEq for ChangesTrieConfiguration[src]

impl StructuralPartialEq for ChangesTrieConfiguration[src]

Auto Trait Implementations

impl RefUnwindSafe for ChangesTrieConfiguration

impl Send for ChangesTrieConfiguration

impl Sync for ChangesTrieConfiguration

impl Unpin for ChangesTrieConfiguration

impl UnwindSafe for ChangesTrieConfiguration

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<S> Codec for S where
    S: Encode + Decode, 

impl<T> DecodeAll for T where
    T: Decode, 

impl<T> DecodeLimit for T where
    T: Decode, 

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]

impl<T> DynClone for T where
    T: Clone
[src]

impl<'_, '_, T> EncodeLike<&'_ &'_ T> for T where
    T: Encode, 

impl<'_, T> EncodeLike<&'_ T> for T where
    T: Encode, 

impl<'_, T> EncodeLike<&'_ mut T> for T where
    T: Encode, 

impl<T> EncodeLike<Arc<T>> for T where
    T: Encode, 

impl<T> EncodeLike<Box<T, Global>> for T where
    T: Encode, 

impl<'a, T> EncodeLike<Cow<'a, T>> for T where
    T: Encode + ToOwned

impl<T> EncodeLike<Rc<T>> for T where
    T: Encode, 

impl<T> From<T> for T[src]

impl<S> FullCodec for S where
    S: Decode + FullEncode, 

impl<S> FullEncode for S where
    S: Encode + EncodeLike<S>, 

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, Outer> IsWrappedBy<Outer> for T where
    Outer: AsRef<T> + AsMut<T> + From<T>,
    T: From<Outer>, 
[src]

pub fn from_ref(&Outer) -> &T[src]

Get a reference to the inner from the outer.

pub fn from_mut(&mut Outer) -> &mut T[src]

Get a mutable reference to the inner from the outer.

impl<T> KeyedVec for T where
    T: Codec, 

impl<T> MallocSizeOfExt for T where
    T: MallocSizeOf, 

impl<T> MaybeDebug for T where
    T: Debug

impl<T> MaybeRefUnwindSafe for T where
    T: RefUnwindSafe
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<S, T> UncheckedInto<T> for S where
    T: UncheckedFrom<S>, 
[src]

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,