Struct xcm_simulator::Location
pub struct Location {
pub parents: u8,
pub interior: Junctions,
}
Expand description
A relative path between state-bearing consensus systems.
A location in a consensus system is defined as an isolatable state machine held within global consensus. The location in question need not have a sophisticated consensus algorithm of its own; a single account within Ethereum, for example, could be considered a location.
A very-much non-exhaustive list of types of location include:
- A (normal, layer-1) block chain, e.g. the Bitcoin mainnet or a parachain.
- A layer-0 super-chain, e.g. the Polkadot Relay chain.
- A layer-2 smart contract, e.g. an ERC-20 on Ethereum.
- A logical functional component of a chain, e.g. a single instance of a pallet on a Frame-based Substrate chain.
- An account.
A Location
is a relative identifier, meaning that it can only be used to define the
relative path between two locations, and cannot generally be used to refer to a location
universally. It is comprised of an integer number of parents specifying the number of times to
“escape” upwards into the containing consensus system and then a number of junctions, each
diving down and specifying some interior portion of state (which may be considered a
“sub-consensus” system).
This specific Location
implementation uses a Junctions
datatype which is a Rust enum
in order to make pattern matching easier. There are occasions where it is important to ensure
that a value is strictly an interior location, in those cases, Junctions
may be used.
The Location
value of Null
simply refers to the interpreting consensus system.
Fields§
§parents: u8
The number of parent junctions at the beginning of this Location
.
interior: Junctions
The interior (i.e. non-parent) junctions that this Location
contains.
Implementations§
§impl Location
impl Location
pub fn new(parents: u8, interior: impl Into<Junctions>) -> Location
pub fn new(parents: u8, interior: impl Into<Junctions>) -> Location
Creates a new Location
with the given number of parents and interior junctions.
pub const fn into_versioned(self) -> VersionedLocation
pub const fn into_versioned(self) -> VersionedLocation
Consume self
and return the equivalent VersionedLocation
value.
pub const fn here() -> Location
pub const fn here() -> Location
Creates a new Location
with 0 parents and a Here
interior.
The resulting Location
can be interpreted as the “current consensus system”.
pub const fn ancestor(parents: u8) -> Location
pub const fn ancestor(parents: u8) -> Location
Creates a new Location
with parents
and an empty (Here
) interior.
pub fn remove_network_id(&mut self)
pub fn remove_network_id(&mut self)
Remove the NetworkId
value in any interior Junction
s.
pub fn interior_mut(&mut self) -> &mut Junctions
pub fn interior_mut(&mut self) -> &mut Junctions
Return a mutable reference to the interior field.
pub const fn parent_count(&self) -> u8
pub const fn parent_count(&self) -> u8
Returns the number of Parent
junctions at the beginning of self
.
pub fn unpack(&self) -> (u8, &[Junction])
pub fn unpack(&self) -> (u8, &[Junction])
Returns the parent count and the interior Junctions
as a tuple.
To be used when pattern matching, for example:
fn get_parachain_id(loc: &Location) -> Option<u32> {
match loc.unpack() {
(0, [Parachain(id)]) => Some(*id),
_ => None
}
}
pub const fn contains_parents_only(&self, count: u8) -> bool
pub const fn contains_parents_only(&self, count: u8) -> bool
Returns boolean indicating whether self
contains only the specified amount of
parents and no interior junctions.
pub fn first_interior(&self) -> Option<&Junction>
pub fn first_interior(&self) -> Option<&Junction>
Returns the first interior junction, or None
if the location is empty or contains only
parents.
pub fn last(&self) -> Option<&Junction>
pub fn last(&self) -> Option<&Junction>
Returns last junction, or None
if the location is empty or contains only parents.
pub fn split_first_interior(self) -> (Location, Option<Junction>)
pub fn split_first_interior(self) -> (Location, Option<Junction>)
Splits off the first interior 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_interior(self) -> (Location, Option<Junction>)
pub fn split_last_interior(self) -> (Location, Option<Junction>)
Splits off the last interior junction, returning the remaining prefix (first item in tuple)
and the last element (second item in tuple) or None
if it was empty or if self
only
contains parents.
pub fn push_interior(
&mut self,
new: impl Into<Junction>,
) -> Result<(), Junction>
pub fn push_interior( &mut self, new: impl Into<Junction>, ) -> Result<(), Junction>
Mutates self
, suffixing its interior junctions with new
. Returns Err
with new
in
case of overflow.
pub fn push_front_interior(
&mut self,
new: impl Into<Junction>,
) -> Result<(), Junction>
pub fn push_front_interior( &mut self, new: impl Into<Junction>, ) -> Result<(), Junction>
Mutates self
, prefixing its interior junctions with new
. Returns Err
with new
in
case of overflow.
pub fn pushed_with_interior(
self,
new: impl Into<Junction>,
) -> Result<Location, (Location, Junction)>
pub fn pushed_with_interior( self, new: impl Into<Junction>, ) -> Result<Location, (Location, Junction)>
Consumes self
and returns a Location
suffixed with new
, or an Err
with
the original value of self
in case of overflow.
pub fn pushed_front_with_interior(
self,
new: impl Into<Junction>,
) -> Result<Location, (Location, Junction)>
pub fn pushed_front_with_interior( self, new: impl Into<Junction>, ) -> Result<Location, (Location, Junction)>
Consumes self
and returns a Location
prefixed with new
, or an Err
with the
original value of self
in case of overflow.
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 is a parent or if the location
does not 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 is a
parent or if it doesn’t contain that many elements.
pub fn dec_parent(&mut self)
pub fn dec_parent(&mut self)
Decrements the parent count by 1.
pub fn take_first_interior(&mut self) -> Option<Junction>
pub fn take_first_interior(&mut self) -> Option<Junction>
Removes the first interior junction from self
, returning it
(or None
if it was empty or if self
contains only parents).
pub fn take_last(&mut self) -> Option<Junction>
pub fn take_last(&mut self) -> Option<Junction>
Removes the last element from interior
, returning it (or None
if it was empty or if
self
only contains parents).
pub fn match_and_split(&self, prefix: &Location) -> Option<&Junction>
pub fn match_and_split(&self, prefix: &Location) -> Option<&Junction>
Ensures that self
has the same number of parents as prefix
, its junctions begins with
the junctions of prefix
and that it has a single Junction
item following.
If so, returns a reference to this Junction
item.
§Example
let mut m = Location::new(1, [PalletInstance(3), OnlyChild]);
assert_eq!(
m.match_and_split(&Location::new(1, [PalletInstance(3)])),
Some(&OnlyChild),
);
assert_eq!(m.match_and_split(&Location::new(1, Here)), None);
pub fn starts_with(&self, prefix: &Location) -> bool
pub fn append_with(
&mut self,
suffix: impl Into<Location>,
) -> Result<(), Location>
pub fn append_with( &mut self, suffix: impl Into<Location>, ) -> Result<(), Location>
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: Location = (Parent, Parachain(21), 69u64).into();
assert_eq!(m.append_with((Parent, PalletInstance(3))), Ok(()));
assert_eq!(m, Location::new(1, [Parachain(21), PalletInstance(3)]));
pub fn appended_with(
self,
suffix: impl Into<Location>,
) -> Result<Location, (Location, Location)>
pub fn appended_with( self, suffix: impl Into<Location>, ) -> Result<Location, (Location, Location)>
Consume self
and return its value suffixed with suffix
.
Returns Err
with the original value of self
and suffix
in case of overflow.
§Example
let mut m: Location = (Parent, Parachain(21), 69u64).into();
let r = m.appended_with((Parent, PalletInstance(3))).unwrap();
assert_eq!(r, Location::new(1, [Parachain(21), PalletInstance(3)]));
pub fn prepend_with(
&mut self,
prefix: impl Into<Location>,
) -> Result<(), Location>
pub fn prepend_with( &mut self, prefix: impl Into<Location>, ) -> Result<(), Location>
Mutate self
so that it is prefixed with prefix
.
Does not modify self
and returns Err
with prefix
in case of overflow.
§Example
let mut m: Location = (Parent, Parent, PalletInstance(3)).into();
assert_eq!(m.prepend_with((Parent, Parachain(21), OnlyChild)), Ok(()));
assert_eq!(m, Location::new(1, [PalletInstance(3)]));
pub fn prepended_with(
self,
prefix: impl Into<Location>,
) -> Result<Location, (Location, Location)>
pub fn prepended_with( self, prefix: impl Into<Location>, ) -> Result<Location, (Location, Location)>
Consume self
and return its value prefixed with prefix
.
Returns Err
with the original value of self
and prefix
in case of overflow.
§Example
let m: Location = (Parent, Parent, PalletInstance(3)).into();
let r = m.prepended_with((Parent, Parachain(21), OnlyChild)).unwrap();
assert_eq!(r, Location::new(1, [PalletInstance(3)]));
pub fn simplify(&mut self, context: &Junctions)
pub fn simplify(&mut self, context: &Junctions)
Remove any unneeded parents/junctions in self
based on the given context it will be
interpreted in.
pub fn chain_location(&self) -> Location
pub fn chain_location(&self) -> Location
Return the Location subsection identifying the chain that self
points to.
Trait Implementations§
§impl Decode for Location
impl Decode for Location
§fn decode<__CodecInputEdqy>(
__codec_input_edqy: &mut __CodecInputEdqy,
) -> Result<Location, Error>where
__CodecInputEdqy: Input,
fn decode<__CodecInputEdqy>(
__codec_input_edqy: &mut __CodecInputEdqy,
) -> Result<Location, Error>where
__CodecInputEdqy: Input,
§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>
§impl<'de> Deserialize<'de> for Location
impl<'de> Deserialize<'de> for Location
§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Location, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Location, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
§impl Encode for Location
impl Encode for Location
§fn encode_to<__CodecOutputEdqy>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy,
)where
__CodecOutputEdqy: Output + ?Sized,
fn encode_to<__CodecOutputEdqy>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy,
)where
__CodecOutputEdqy: Output + ?Sized,
§fn using_encoded<R, F>(&self, f: F) -> R
fn using_encoded<R, F>(&self, f: F) -> R
§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
§impl<J0, J1, J2> From<(J0, J1, J2)> for Location
impl<J0, J1, J2> From<(J0, J1, J2)> for Location
§fn from(_: (J0, J1, J2)) -> Location
fn from(_: (J0, J1, J2)) -> Location
§impl<J0, J1, J2, J3> From<(J0, J1, J2, J3)> for Location
impl<J0, J1, J2, J3> From<(J0, J1, J2, J3)> for Location
§fn from(_: (J0, J1, J2, J3)) -> Location
fn from(_: (J0, J1, J2, J3)) -> Location
§impl<J0, J1, J2, J3, J4> From<(J0, J1, J2, J3, J4)> for Location
impl<J0, J1, J2, J3, J4> From<(J0, J1, J2, J3, J4)> for Location
§fn from(_: (J0, J1, J2, J3, J4)) -> Location
fn from(_: (J0, J1, J2, J3, J4)) -> Location
§impl<J0, J1, J2, J3, J4, J5> From<(J0, J1, J2, J3, J4, J5)> for Location
impl<J0, J1, J2, J3, J4, J5> From<(J0, J1, J2, J3, J4, J5)> for Location
§fn from(_: (J0, J1, J2, J3, J4, J5)) -> Location
fn from(_: (J0, J1, J2, J3, J4, J5)) -> Location
§impl<J0, J1, J2, J3, J4, J5, J6> From<(J0, J1, J2, J3, J4, J5, J6)> for Location
impl<J0, J1, J2, J3, J4, J5, J6> From<(J0, J1, J2, J3, J4, J5, J6)> for Location
§fn from(_: (J0, J1, J2, J3, J4, J5, J6)) -> Location
fn from(_: (J0, J1, J2, J3, J4, J5, J6)) -> Location
§impl<J0, J1, J2, J3, J4, J5, J6, J7> From<(J0, J1, J2, J3, J4, J5, J6, J7)> for Location
impl<J0, J1, J2, J3, J4, J5, J6, J7> From<(J0, J1, J2, J3, J4, J5, J6, J7)> for Location
§fn from(_: (J0, J1, J2, J3, J4, J5, J6, J7)) -> Location
fn from(_: (J0, J1, J2, J3, J4, J5, J6, J7)) -> Location
§impl<J0, J1, J2, J3, J4, J5, J6, J7> From<(Parent, Parent, J0, J1, J2, J3, J4, J5, J6, J7)> for Location
impl<J0, J1, J2, J3, J4, J5, J6, J7> From<(Parent, Parent, J0, J1, J2, J3, J4, J5, J6, J7)> for Location
§impl<J0, J1, J2, J3, J4, J5, J6> From<(Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6)> for Location
impl<J0, J1, J2, J3, J4, J5, J6> From<(Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6)> for Location
§impl<J0, J1, J2, J3, J4, J5, J6, J7> From<(Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6, J7)> for Location
impl<J0, J1, J2, J3, J4, J5, J6, J7> From<(Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6, J7)> for Location
§impl<J0, J1, J2, J3, J4, J5> From<(Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5)> for Location
impl<J0, J1, J2, J3, J4, J5> From<(Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5)> for Location
§impl<J0, J1, J2, J3, J4, J5, J6> From<(Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6)> for Location
impl<J0, J1, J2, J3, J4, J5, J6> From<(Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6)> for Location
§impl<J0, J1, J2, J3, J4, J5, J6, J7> From<(Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6, J7)> for Location
impl<J0, J1, J2, J3, J4, J5, J6, J7> From<(Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6, J7)> for Location
§impl<J0, J1, J2, J3, J4> From<(Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4)> for Location
impl<J0, J1, J2, J3, J4> From<(Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4)> for Location
§impl<J0, J1, J2, J3, J4, J5> From<(Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5)> for Location
impl<J0, J1, J2, J3, J4, J5> From<(Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5)> for Location
§impl<J0, J1, J2, J3, J4, J5, J6> From<(Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6)> for Location
impl<J0, J1, J2, J3, J4, J5, J6> From<(Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6)> for Location
§impl<J0, J1, J2, J3, J4, J5, J6, J7> From<(Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6, J7)> for Location
impl<J0, J1, J2, J3, J4, J5, J6, J7> From<(Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6, J7)> for Location
§impl<J0, J1, J2, J3> From<(Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3)> for Location
impl<J0, J1, J2, J3> From<(Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3)> for Location
§impl<J0, J1, J2, J3, J4> From<(Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4)> for Location
impl<J0, J1, J2, J3, J4> From<(Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4)> for Location
§impl<J0, J1, J2, J3, J4, J5> From<(Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5)> for Location
impl<J0, J1, J2, J3, J4, J5> From<(Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5)> for Location
§impl<J0, J1, J2, J3, J4, J5, J6> From<(Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6)> for Location
impl<J0, J1, J2, J3, J4, J5, J6> From<(Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6)> for Location
§impl<J0, J1, J2, J3, J4, J5, J6, J7> From<(Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6, J7)> for Location
impl<J0, J1, J2, J3, J4, J5, J6, J7> From<(Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6, J7)> for Location
§impl<J0, J1, J2> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2)> for Location
impl<J0, J1, J2> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2)> for Location
§impl<J0, J1, J2, J3> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3)> for Location
impl<J0, J1, J2, J3> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3)> for Location
§impl<J0, J1, J2, J3, J4> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4)> for Location
impl<J0, J1, J2, J3, J4> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4)> for Location
§impl<J0, J1, J2, J3, J4, J5> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5)> for Location
impl<J0, J1, J2, J3, J4, J5> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5)> for Location
§impl<J0, J1, J2, J3, J4, J5, J6> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6)> for Location
impl<J0, J1, J2, J3, J4, J5, J6> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6)> for Location
§impl<J0, J1, J2, J3, J4, J5, J6, J7> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6, J7)> for Location
impl<J0, J1, J2, J3, J4, J5, J6, J7> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6, J7)> for Location
§impl<J0, J1> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1)> for Location
impl<J0, J1> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1)> for Location
§impl<J0, J1, J2> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2)> for Location
impl<J0, J1, J2> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2)> for Location
§impl<J0, J1, J2, J3> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3)> for Location
impl<J0, J1, J2, J3> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3)> for Location
§impl<J0, J1, J2, J3, J4> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4)> for Location
impl<J0, J1, J2, J3, J4> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4)> for Location
§impl<J0, J1, J2, J3, J4, J5> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5)> for Location
impl<J0, J1, J2, J3, J4, J5> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5)> for Location
§impl<J0, J1, J2, J3, J4, J5, J6> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6)> for Location
impl<J0, J1, J2, J3, J4, J5, J6> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6)> for Location
§impl<J0, J1, J2, J3, J4, J5, J6, J7> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6, J7)> for Location
impl<J0, J1, J2, J3, J4, J5, J6, J7> From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent, J0, J1, J2, J3, J4, J5, J6, J7)> for Location
§impl From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent, Junctions)> for Location
impl From<(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent, Junctions)> for Location
§impl<Interior> From<AncestorThen<Interior>> for Location
impl<Interior> From<AncestorThen<Interior>> for Location
§fn from(_: AncestorThen<Interior>) -> Location
fn from(_: AncestorThen<Interior>) -> Location
§impl From<ParentThen> for Location
impl From<ParentThen> for Location
§fn from(_: ParentThen) -> Location
fn from(_: ParentThen) -> Location
§impl MaxEncodedLen for Location
impl MaxEncodedLen for Location
§fn max_encoded_len() -> usize
fn max_encoded_len() -> usize
§impl Ord for Location
impl Ord for Location
§impl PartialOrd for Location
impl PartialOrd for Location
§fn partial_cmp(&self, other: &Location) -> Option<Ordering>
fn partial_cmp(&self, other: &Location) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more§impl Reanchorable for Location
impl Reanchorable for Location
§fn reanchor(&mut self, target: &Location, context: &Junctions) -> Result<(), ()>
fn reanchor(&mut self, target: &Location, context: &Junctions) -> Result<(), ()>
Mutate self
so that it represents the same location from the point of view of target
.
The context of self
is provided as context
.
Does not modify self
in case of overflow.
§impl Serialize for Location
impl Serialize for Location
§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl EncodeLike for Location
impl Eq for Location
impl StructuralPartialEq for Location
Auto Trait Implementations§
impl Freeze for Location
impl RefUnwindSafe for Location
impl Send for Location
impl Sync for Location
impl Unpin for Location
impl UnwindSafe for Location
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
§impl<T> Clear for T
impl<T> Clear for T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
§impl<T> Conv for T
impl<T> Conv 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,
§impl<T> DefensiveMax<T> for Twhere
T: PartialOrd,
impl<T> DefensiveMax<T> for Twhere
T: PartialOrd,
§fn defensive_max(self, other: T) -> T
fn defensive_max(self, other: T) -> T
§fn defensive_strict_max(self, other: T) -> T
fn defensive_strict_max(self, other: T) -> T
§impl<T> DefensiveMin<T> for Twhere
T: PartialOrd,
impl<T> DefensiveMin<T> for Twhere
T: PartialOrd,
§fn defensive_min(self, other: T) -> T
fn defensive_min(self, other: T) -> T
§fn defensive_strict_min(self, other: T) -> T
fn defensive_strict_min(self, other: T) -> T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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 Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> FullLeaf for T
impl<T> FullLeaf for T
§impl<T> Hashable for Twhere
T: Codec,
impl<T> Hashable for Twhere
T: Codec,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
fn into_tuple(self) -> Dest
§impl<T> IsType<T> for T
impl<T> IsType<T> for T
§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
§impl<T> KeyedVec for Twhere
T: Codec,
impl<T> KeyedVec for Twhere
T: Codec,
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
§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.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
type Error = <U as TryFromKey<T>>::Error
fn try_into_key(self) -> Result<U, <U as TryFromKey<T>>::Error>
§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.