Type Alias InteriorLocation
pub type InteriorLocation = Junctions;
Expand description
A relative location which is constrained to be an interior location of the context.
See also Location
.
Aliased Type§
enum InteriorLocation {
Here,
X1(Arc<[Junction; 1]>),
X2(Arc<[Junction; 2]>),
X3(Arc<[Junction; 3]>),
X4(Arc<[Junction; 4]>),
X5(Arc<[Junction; 5]>),
X6(Arc<[Junction; 6]>),
X7(Arc<[Junction; 7]>),
X8(Arc<[Junction; 8]>),
}
Variants§
Here
The interpreting consensus system.
X1(Arc<[Junction; 1]>)
A relative path comprising 1 junction.
X2(Arc<[Junction; 2]>)
A relative path comprising 2 junctions.
X3(Arc<[Junction; 3]>)
A relative path comprising 3 junctions.
X4(Arc<[Junction; 4]>)
A relative path comprising 4 junctions.
X5(Arc<[Junction; 5]>)
A relative path comprising 5 junctions.
X6(Arc<[Junction; 6]>)
A relative path comprising 6 junctions.
X7(Arc<[Junction; 7]>)
A relative path comprising 7 junctions.
X8(Arc<[Junction; 8]>)
A relative path comprising 8 junctions.
Implementations
§impl Junctions
impl Junctions
pub const fn into_location(self) -> Location
pub const fn into_location(self) -> Location
Convert self
into a Location
containing 0 parents.
Similar to Into::into
, except that this method can be used in a const evaluation context.
pub const fn into_exterior(self, n: u8) -> Location
pub const fn into_exterior(self, n: u8) -> Location
Convert self
into a Location
containing n
parents.
Similar to Self::into_location
, with the added ability to specify the number of parent
junctions.
pub fn as_slice_mut(&mut self) -> &mut [Junction]
pub fn as_slice_mut(&mut self) -> &mut [Junction]
Casts self
into a mutable slice containing Junction
s.
pub fn remove_network_id(&mut self)
pub fn remove_network_id(&mut self)
Remove the NetworkId
value in any Junction
s.
pub fn invert_target(&self, target: &Location) -> Result<Location, ()>
pub fn invert_target(&self, target: &Location) -> Result<Location, ()>
Treating self
as the universal context, return the location of the local consensus system
from the point of view of the given target
.
pub fn for_each_mut(&mut self, x: impl FnMut(&mut Junction))
pub fn for_each_mut(&mut self, x: impl FnMut(&mut Junction))
Execute a function f
on every junction. We use this since we cannot implement a mutable
Iterator
without unsafe code.
pub fn global_consensus(&self) -> Result<NetworkId, ()>
pub fn global_consensus(&self) -> Result<NetworkId, ()>
Extract the network ID treating this value as a universal location.
This will return an Err
if the first item is not a GlobalConsensus
, which would indicate
that this value is not a universal location.
pub fn split_global(self) -> Result<(NetworkId, Junctions), ()>
pub fn split_global(self) -> Result<(NetworkId, Junctions), ()>
Extract the network ID and the interior consensus location, treating this value as a universal location.
This will return an Err
if the first item is not a GlobalConsensus
, which would indicate
that this value is not a universal location.
pub fn within_global(self, relative: Location) -> Result<Junctions, ()>
pub fn within_global(self, relative: Location) -> Result<Junctions, ()>
Treat self
as a universal location and the context of relative
, returning the universal
location of relative.
This will return an error if relative
has as many (or more) parents than there are
junctions in self
, implying that relative refers into a different global consensus.
pub fn relative_to(self, viewer: &Junctions) -> Location
pub fn relative_to(self, viewer: &Junctions) -> Location
Consumes self
and returns how viewer
would address it locally.
pub fn split_first(self) -> (Junctions, Option<Junction>)
pub fn split_first(self) -> (Junctions, Option<Junction>)
Splits off the first junction, returning the remaining suffix (first item in tuple) and the
first element (second item in tuple) or None
if it was empty.
pub fn split_last(self) -> (Junctions, Option<Junction>)
pub fn split_last(self) -> (Junctions, Option<Junction>)
Splits off the last junction, returning the remaining prefix (first item in tuple) and the
last element (second item in tuple) or None
if it was empty.
pub fn take_first(&mut self) -> Option<Junction>
pub fn take_first(&mut self) -> Option<Junction>
Removes the first element from self
, returning it (or None
if it was empty).
pub fn take_last(&mut self) -> Option<Junction>
pub fn take_last(&mut self) -> Option<Junction>
Removes the last element from self
, returning it (or None
if it was empty).
pub fn push(&mut self, new: impl Into<Junction>) -> Result<(), Junction>
pub fn push(&mut self, new: impl Into<Junction>) -> Result<(), Junction>
Mutates self
to be appended with new
or returns an Err
with new
if would overflow.
pub fn push_front(&mut self, new: impl Into<Junction>) -> Result<(), Junction>
pub fn push_front(&mut self, new: impl Into<Junction>) -> Result<(), Junction>
Mutates self
to be prepended with new
or returns an Err
with new
if would overflow.
pub fn pushed_with(
self,
new: impl Into<Junction>,
) -> Result<Junctions, (Junctions, Junction)>
pub fn pushed_with( self, new: impl Into<Junction>, ) -> Result<Junctions, (Junctions, Junction)>
Consumes self
and returns a Junctions
suffixed with new
, or an Err
with the
original value of self
and new
in case of overflow.
pub fn pushed_front_with(
self,
new: impl Into<Junction>,
) -> Result<Junctions, (Junctions, Junction)>
pub fn pushed_front_with( self, new: impl Into<Junction>, ) -> Result<Junctions, (Junctions, Junction)>
Consumes self
and returns a Junctions
prefixed with new
, or an Err
with the
original value of self
and new
in case of overflow.
pub fn append_with(
&mut self,
suffix: impl Into<Junctions>,
) -> Result<(), Junctions>
pub fn append_with( &mut self, suffix: impl Into<Junctions>, ) -> Result<(), Junctions>
Mutate self
so that it is suffixed with suffix
.
Does not modify self
and returns Err
with suffix
in case of overflow.
§Example
let mut m = Junctions::from([Parachain(21)]);
assert_eq!(m.append_with([PalletInstance(3)]), Ok(()));
assert_eq!(m, [Parachain(21), PalletInstance(3)]);
pub fn at(&self, i: usize) -> Option<&Junction>
pub fn at(&self, i: usize) -> Option<&Junction>
Returns the junction at index i
, or None
if the location doesn’t contain that many
elements.
pub fn at_mut(&mut self, i: usize) -> Option<&mut Junction>
pub fn at_mut(&mut self, i: usize) -> Option<&mut Junction>
Returns a mutable reference to the junction at index i
, or None
if the location doesn’t
contain that many elements.
pub fn iter(&self) -> JunctionsRefIterator<'_>
pub fn iter(&self) -> JunctionsRefIterator<'_>
Returns a reference iterator over the junctions.
pub fn match_and_split(&self, prefix: &Junctions) -> Option<&Junction>
pub fn match_and_split(&self, prefix: &Junctions) -> Option<&Junction>
Ensures that self begins with prefix
and that it has a single Junction
item following.
If so, returns a reference to this Junction
item.
§Example
let mut m = Junctions::from([Parachain(2), PalletInstance(3), OnlyChild]);
assert_eq!(m.match_and_split(&[Parachain(2), PalletInstance(3)].into()), Some(&OnlyChild));
assert_eq!(m.match_and_split(&[Parachain(2)].into()), None);