[−][src]Struct sp_blockchain::TreeRoute
A tree-route from one block to another in the chain.
All blocks prior to the pivot in the deque is the reverse-order unique ancestry of the first block, the block at the pivot index is the common ancestor, and all blocks after the pivot is the ancestry of the second block, in order.
The ancestry sets will include the given blocks, and thus the tree-route is never empty.
Tree route from R1 to E2. Retracted is [R1, R2, R3], Common is C, enacted [E1, E2]
<- R3 <- R2 <- R1
/
C
\-> E1 -> E2
Tree route from C to E2. Retracted empty. Common is C, enacted [E1, E2]
C -> E1 -> E2
Implementations
impl<Block: BlockT> TreeRoute<Block>
[src]
pub fn retracted(&self) -> &[HashAndNumber<Block>]
[src]
Get a slice of all retracted blocks in reverse order (towards common ancestor).
pub fn into_retracted(mut self: Self) -> Vec<HashAndNumber<Block>>
[src]
Convert into all retracted blocks in reverse order (towards common ancestor).
pub fn common_block(&self) -> &HashAndNumber<Block>
[src]
Get the common ancestor block. This might be one of the two blocks of the route.
pub fn enacted(&self) -> &[HashAndNumber<Block>]
[src]
Get a slice of enacted blocks (descendents of the common ancestor)
Trait Implementations
impl<Block: Clone + BlockT> Clone for TreeRoute<Block>
[src]
impl<Block: Debug + BlockT> Debug for TreeRoute<Block>
[src]
Auto Trait Implementations
impl<Block> RefUnwindSafe for TreeRoute<Block> where
<Block as Block>::Hash: RefUnwindSafe,
<<Block as Block>::Header as Header>::Number: RefUnwindSafe,
[src]
<Block as Block>::Hash: RefUnwindSafe,
<<Block as Block>::Header as Header>::Number: RefUnwindSafe,
impl<Block> Send for TreeRoute<Block> where
<Block as Block>::Hash: Send,
<<Block as Block>::Header as Header>::Number: Send,
[src]
<Block as Block>::Hash: Send,
<<Block as Block>::Header as Header>::Number: Send,
impl<Block> Sync for TreeRoute<Block> where
<Block as Block>::Hash: Sync,
<<Block as Block>::Header as Header>::Number: Sync,
[src]
<Block as Block>::Hash: Sync,
<<Block as Block>::Header as Header>::Number: Sync,
impl<Block> Unpin for TreeRoute<Block> where
<Block as Block>::Hash: Unpin,
<<Block as Block>::Header as Header>::Number: Unpin,
[src]
<Block as Block>::Hash: Unpin,
<<Block as Block>::Header as Header>::Number: Unpin,
impl<Block> UnwindSafe for TreeRoute<Block> where
<Block as Block>::Hash: UnwindSafe,
<<Block as Block>::Header as Header>::Number: UnwindSafe,
[src]
<Block as Block>::Hash: UnwindSafe,
<<Block as Block>::Header as Header>::Number: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> CheckedConversion for T
[src]
pub fn checked_from<T>(t: T) -> Option<Self> where
Self: TryFrom<T>,
[src]
Self: TryFrom<T>,
pub fn checked_into<T>(self) -> Option<T> where
Self: TryInto<T>,
[src]
Self: TryInto<T>,
impl<T> DynClone for T where
T: Clone,
[src]
T: Clone,
pub fn __clone_box(&self, Private) -> *mut ()
[src]
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, Outer> IsWrappedBy<Outer> for T where
T: From<Outer>,
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
Outer: AsRef<T> + AsMut<T> + From<T>,
pub fn from_ref(outer: &Outer) -> &T
Get a reference to the inner from the outer.
pub fn from_mut(outer: &mut Outer) -> &mut T
Get a mutable reference to the inner from the outer.
impl<T> MaybeDebug for T where
T: Debug,
T: Debug,
impl<T> MaybeDebug for T where
T: Debug,
T: Debug,
impl<T> MaybeRefUnwindSafe for T where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> SaturatedConversion for T
pub fn saturated_from<T>(t: T) -> Self where
Self: UniqueSaturatedFrom<T>,
Self: UniqueSaturatedFrom<T>,
pub fn saturated_into<T>(self) -> T where
Self: UniqueSaturatedInto<T>,
Self: UniqueSaturatedInto<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<S, T> UncheckedInto<T> for S where
T: UncheckedFrom<S>,
T: UncheckedFrom<S>,
pub fn unchecked_into(self) -> T
impl<T, S> UniqueSaturatedInto<T> for S where
T: Bounded,
S: TryInto<T>,
T: Bounded,
S: TryInto<T>,
pub fn unique_saturated_into(self) -> T
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,