Struct bytecode::access_path_trie::AccessPathTrie
source · pub struct AccessPathTrie<T: FootprintDomain>(_);
Expand description
Set of (root node, child) associations
Implementations§
source§impl<T: FootprintDomain> AccessPathTrie<T>
impl<T: FootprintDomain> AccessPathTrie<T>
sourcepub fn remove_node(&mut self, ap: AccessPath) -> Option<TrieNode<T>>
pub fn remove_node(&mut self, ap: AccessPath) -> Option<TrieNode<T>>
Removes node located at the given access path Returns the node if it has been fully removed from the trie (i.e. it did not have any children)
pub fn get_child_data(&self) -> Option<T>
sourcepub fn update_access_path_weak(&mut self, ap: AccessPath, data: Option<T>)
pub fn update_access_path_weak(&mut self, ap: AccessPath, data: Option<T>)
Like update_access_path
, but always performs a weak update
sourcepub fn update_access_path(&mut self, ap: AccessPath, data: Option<T>)
pub fn update_access_path(&mut self, ap: AccessPath, data: Option<T>)
Update ap
in global
.
Performs a strong update if the base of ap
is a local and all offsets are Field’s.
Otherwise, performs a weak update (TODO: more details).
Creates nodes for each offset in ap
if they do not already exist
sourcepub fn join_access_path(&mut self, ap: AccessPath, node: TrieNode<T>)
pub fn join_access_path(&mut self, ap: AccessPath, node: TrieNode<T>)
Join the value bound to ap
with node
sourcepub fn bind_local(
&mut self,
local_index: TempIndex,
data: T,
fun_env: &FunctionEnv<'_>
)
pub fn bind_local( &mut self, local_index: TempIndex, data: T, fun_env: &FunctionEnv<'_> )
Bind data
to local_index
in the trie, overwriting the old value of local_index
sourcepub fn bind_local_node(
&mut self,
local_index: TempIndex,
node: TrieNode<T>,
fun_env: &FunctionEnv<'_>
)
pub fn bind_local_node( &mut self, local_index: TempIndex, node: TrieNode<T>, fun_env: &FunctionEnv<'_> )
Bind node
to local_index
in the trie, overwriting the old value of local_index
sourcepub fn remove_local(&mut self, local_index: TempIndex, fun_env: &FunctionEnv<'_>)
pub fn remove_local(&mut self, local_index: TempIndex, fun_env: &FunctionEnv<'_>)
Remove the value bound to the local variable local_index
sourcepub fn bind_return(&mut self, return_index: usize, data: T)
pub fn bind_return(&mut self, return_index: usize, data: T)
Bind data
to the return variable return_index
sourcepub fn get_local(
&self,
local_index: TempIndex,
fun_env: &FunctionEnv<'_>
) -> Option<&T>
pub fn get_local( &self, local_index: TempIndex, fun_env: &FunctionEnv<'_> ) -> Option<&T>
Retrieve the data associated with local_index
in the trie. Returns None
if there is no associated data
sourcepub fn get_local_node(
&self,
local_index: TempIndex,
fun_env: &FunctionEnv<'_>
) -> Option<&TrieNode<T>>
pub fn get_local_node( &self, local_index: TempIndex, fun_env: &FunctionEnv<'_> ) -> Option<&TrieNode<T>>
Retrieve the node associated with local_index
in the trie. Returns None
if there is no associated node
sourcepub fn local_exists(
&self,
local_index: TempIndex,
fun_env: &FunctionEnv<'_>
) -> bool
pub fn local_exists( &self, local_index: TempIndex, fun_env: &FunctionEnv<'_> ) -> bool
Return true
if there is a value bound to local variable local_index
sourcepub fn keys_statically_known(&self) -> bool
pub fn keys_statically_known(&self) -> bool
Return true
if the keys of self
have no dynamic components and thus can be converted into
a compact set of concrete access paths.
sourcepub fn substitute_footprint<F>(
self,
actuals: &[TempIndex],
type_actuals: &[Type],
func_env: &FunctionEnv<'_>,
sub_map: &dyn AccessPathMap<AbsAddr>,
sub_data: F
) -> Selfwhere
F: FnMut(&mut T, &[TempIndex], &[Type], &FunctionEnv<'_>, &dyn AccessPathMap<AbsAddr>) + Copy,
pub fn substitute_footprint<F>( self, actuals: &[TempIndex], type_actuals: &[Type], func_env: &FunctionEnv<'_>, sub_map: &dyn AccessPathMap<AbsAddr>, sub_data: F ) -> Selfwhere F: FnMut(&mut T, &[TempIndex], &[Type], &FunctionEnv<'_>, &dyn AccessPathMap<AbsAddr>) + Copy,
Bind caller data in actuals
, type_actuals
, and sub_map
to self
.
(1) Bind all free type variables in self
to type_actuals
(2) Apply sub_data
to self.data
and (recursively) to the data
fields of self.children
sourcepub fn substitute_footprint_skip_data(
self,
actuals: &[TempIndex],
type_actuals: &[Type],
func_env: &FunctionEnv<'_>,
sub_map: &dyn AccessPathMap<AbsAddr>
) -> Self
pub fn substitute_footprint_skip_data( self, actuals: &[TempIndex], type_actuals: &[Type], func_env: &FunctionEnv<'_>, sub_map: &dyn AccessPathMap<AbsAddr> ) -> Self
Same as substitute_footprint
, but does not change the data
field of any node
sourcepub fn substitute_footprint_concrete(
self,
actuals: &[TempIndex],
type_actuals: &[TypeTag],
func_env: &FunctionEnv<'_>,
sub_map: &dyn AccessPathMap<AbsAddr>,
env: &GlobalEnv
) -> Self
pub fn substitute_footprint_concrete( self, actuals: &[TempIndex], type_actuals: &[TypeTag], func_env: &FunctionEnv<'_>, sub_map: &dyn AccessPathMap<AbsAddr>, env: &GlobalEnv ) -> Self
Substitute concrete values actuals
and type_actuals
into self
sourcepub fn iter_values<F>(&mut self, f: F)where
F: FnMut(&mut TrieNode<T>) + Copy,
pub fn iter_values<F>(&mut self, f: F)where F: FnMut(&mut TrieNode<T>) + Copy,
Apply f
to each node in self
sourcepub fn iter_offsets<F>(&self, f: F)where
F: FnMut(&Offset),
pub fn iter_offsets<F>(&self, f: F)where F: FnMut(&Offset),
Apply f
to each offset in self
sourcepub fn iter_paths_opt<F>(&self, f: F)where
F: FnMut(&AccessPath, &Option<&T>),
pub fn iter_paths_opt<F>(&self, f: F)where F: FnMut(&AccessPath, &Option<&T>),
Apply f
to each (access path, Option(data)) pair encoded in self
sourcepub fn iter_paths<F>(&self, f: F)where
F: FnMut(&AccessPath, &T),
pub fn iter_paths<F>(&self, f: F)where F: FnMut(&AccessPath, &T),
Apply f
to each (access path, data) pair encoded in self
sourcepub fn filter_map_paths<F, R>(&self, f: F) -> Vec<R> ⓘwhere
F: FnMut(&AccessPath, &T) -> Option<R>,
pub fn filter_map_paths<F, R>(&self, f: F) -> Vec<R> ⓘwhere F: FnMut(&AccessPath, &T) -> Option<R>,
Apply f
to each (access path, data) pair encoded in self
and collects the result when f
returns Some(r)
sourcepub fn display<'a>(
&'a self,
env: &'a FunctionEnv<'_>
) -> AccessPathTrieDisplay<'a, T>
pub fn display<'a>( &'a self, env: &'a FunctionEnv<'_> ) -> AccessPathTrieDisplay<'a, T>
Return a wrapper that of self
that implements Display
using env
Methods from Deref<Target = MapDomain<Root, TrieNode<T>>>§
sourcepub fn insert_join(&mut self, k: K, v: V) -> JoinResult
pub fn insert_join(&mut self, k: K, v: V) -> JoinResult
Join v
with self[k] if k
is bound, insert v
otherwise
sourcepub fn update_values(&mut self, f: impl FnMut(&mut V))
pub fn update_values(&mut self, f: impl FnMut(&mut V))
Updates the values in the range of the map using the given function. Notice
that with other kind of map representations we would use iter_mut
for this,
but this is not available in OrdMap for obvious reasons (because entries are shared),
so we need to use this pattern here instead.
Methods from Deref<Target = OrdMap<K, V>>§
pub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Test whether a map is empty.
Time: O(1)
Examples
assert!(
!ordmap!{1 => 2}.is_empty()
);
assert!(
OrdMap::<i32, i32>::new().is_empty()
);
pub fn ptr_eq(&self, other: &OrdMap<K, V>) -> bool
pub fn ptr_eq(&self, other: &OrdMap<K, V>) -> bool
Test whether two maps refer to the same content in memory.
This is true if the two sides are references to the same map, or if the two maps refer to the same root node.
This would return true if you’re comparing a map to itself, or if you’re comparing a map to a fresh clone of itself.
Time: O(1)
pub fn get_max(&self) -> Option<&(K, V)>
pub fn get_max(&self) -> Option<&(K, V)>
Get the largest key in a map, along with its value. If the map
is empty, return None
.
Time: O(log n)
Examples
assert_eq!(Some(&(3, 33)), ordmap!{
1 => 11,
2 => 22,
3 => 33
}.get_max());
pub fn get_min(&self) -> Option<&(K, V)>
pub fn get_min(&self) -> Option<&(K, V)>
Get the smallest key in a map, along with its value. If the
map is empty, return None
.
Time: O(log n)
Examples
assert_eq!(Some(&(1, 11)), ordmap!{
1 => 11,
2 => 22,
3 => 33
}.get_min());
pub fn iter(&self) -> Iter<'_, K, V>
pub fn iter(&self) -> Iter<'_, K, V>
Get an iterator over the key/value pairs of a map.
pub fn range<R, BK>(&self, range: R) -> Iter<'_, K, V>where
R: RangeBounds<BK>,
K: Borrow<BK>,
BK: Ord + ?Sized,
pub fn range<R, BK>(&self, range: R) -> Iter<'_, K, V>where R: RangeBounds<BK>, K: Borrow<BK>, BK: Ord + ?Sized,
Create an iterator over a range of key/value pairs.
pub fn keys(&self) -> Keys<'_, K, V>
pub fn keys(&self) -> Keys<'_, K, V>
Get an iterator over a map’s keys.
pub fn values(&self) -> Values<'_, K, V>
pub fn values(&self) -> Values<'_, K, V>
Get an iterator over a map’s values.
pub fn diff<'a>(&'a self, other: &'a OrdMap<K, V>) -> DiffIter<'a, K, V>
pub fn diff<'a>(&'a self, other: &'a OrdMap<K, V>) -> DiffIter<'a, K, V>
Get an iterator over the differences between this map and another, i.e. the set of entries to add, update, or remove to this map in order to make it equal to the other map.
This function will avoid visiting nodes which are shared between the two maps, meaning that even very large maps can be compared quickly if most of their structure is shared.
Time: O(n) (where n is the number of unique elements across the two maps, minus the number of elements belonging to nodes shared between them)
pub fn get<BK>(&self, key: &BK) -> Option<&V>where
BK: Ord + ?Sized,
K: Borrow<BK>,
pub fn get<BK>(&self, key: &BK) -> Option<&V>where BK: Ord + ?Sized, K: Borrow<BK>,
Get the value for a key from a map.
Time: O(log n)
Examples
let map = ordmap!{123 => "lol"};
assert_eq!(
map.get(&123),
Some(&"lol")
);
pub fn get_key_value<BK>(&self, key: &BK) -> Option<(&K, &V)>where
BK: Ord + ?Sized,
K: Borrow<BK>,
pub fn get_key_value<BK>(&self, key: &BK) -> Option<(&K, &V)>where BK: Ord + ?Sized, K: Borrow<BK>,
Get the key/value pair for a key from a map.
Time: O(log n)
Examples
let map = ordmap!{123 => "lol"};
assert_eq!(
map.get_key_value(&123),
Some((&123, &"lol"))
);
pub fn get_prev<BK>(&self, key: &BK) -> Option<(&K, &V)>where
BK: Ord + ?Sized,
K: Borrow<BK>,
pub fn get_prev<BK>(&self, key: &BK) -> Option<(&K, &V)>where BK: Ord + ?Sized, K: Borrow<BK>,
Get the closest smaller entry in a map to a given key as a mutable reference.
If the map contains the given key, this is returned.
Otherwise, the closest key in the map smaller than the
given value is returned. If the smallest key in the map
is larger than the given key, None
is returned.
Examples
let map = ordmap![1 => 1, 3 => 3, 5 => 5];
assert_eq!(Some((&3, &3)), map.get_prev(&4));
pub fn get_next<BK>(&self, key: &BK) -> Option<(&K, &V)>where
BK: Ord + ?Sized,
K: Borrow<BK>,
pub fn get_next<BK>(&self, key: &BK) -> Option<(&K, &V)>where BK: Ord + ?Sized, K: Borrow<BK>,
Get the closest larger entry in a map to a given key as a mutable reference.
If the set contains the given value, this is returned.
Otherwise, the closest value in the set larger than the
given value is returned. If the largest value in the set
is smaller than the given value, None
is returned.
Examples
let map = ordmap![1 => 1, 3 => 3, 5 => 5];
assert_eq!(Some((&5, &5)), map.get_next(&4));
pub fn contains_key<BK>(&self, k: &BK) -> boolwhere
BK: Ord + ?Sized,
K: Borrow<BK>,
pub fn contains_key<BK>(&self, k: &BK) -> boolwhere BK: Ord + ?Sized, K: Borrow<BK>,
Test for the presence of a key in a map.
Time: O(log n)
Examples
let map = ordmap!{123 => "lol"};
assert!(
map.contains_key(&123)
);
assert!(
!map.contains_key(&321)
);
pub fn is_submap_by<B, RM, F>(&self, other: RM, cmp: F) -> boolwhere
F: FnMut(&V, &B) -> bool,
RM: Borrow<OrdMap<K, B>>,
pub fn is_submap_by<B, RM, F>(&self, other: RM, cmp: F) -> boolwhere F: FnMut(&V, &B) -> bool, RM: Borrow<OrdMap<K, B>>,
Test whether a map is a submap of another map, meaning that all keys in our map must also be in the other map, with the same values.
Use the provided function to decide whether values are equal.
Time: O(n log n)
pub fn is_proper_submap_by<B, RM, F>(&self, other: RM, cmp: F) -> boolwhere
F: FnMut(&V, &B) -> bool,
RM: Borrow<OrdMap<K, B>>,
pub fn is_proper_submap_by<B, RM, F>(&self, other: RM, cmp: F) -> boolwhere F: FnMut(&V, &B) -> bool, RM: Borrow<OrdMap<K, B>>,
Test whether a map is a proper submap of another map, meaning that all keys in our map must also be in the other map, with the same values. To be a proper submap, ours must also contain fewer keys than the other map.
Use the provided function to decide whether values are equal.
Time: O(n log n)
pub fn is_submap<RM>(&self, other: RM) -> boolwhere
V: PartialEq<V>,
RM: Borrow<OrdMap<K, V>>,
pub fn is_submap<RM>(&self, other: RM) -> boolwhere V: PartialEq<V>, RM: Borrow<OrdMap<K, V>>,
Test whether a map is a submap of another map, meaning that all keys in our map must also be in the other map, with the same values.
Time: O(n log n)
Examples
let map1 = ordmap!{1 => 1, 2 => 2};
let map2 = ordmap!{1 => 1, 2 => 2, 3 => 3};
assert!(map1.is_submap(map2));
pub fn is_proper_submap<RM>(&self, other: RM) -> boolwhere
V: PartialEq<V>,
RM: Borrow<OrdMap<K, V>>,
pub fn is_proper_submap<RM>(&self, other: RM) -> boolwhere V: PartialEq<V>, RM: Borrow<OrdMap<K, V>>,
Test whether a map is a proper submap of another map, meaning that all keys in our map must also be in the other map, with the same values. To be a proper submap, ours must also contain fewer keys than the other map.
Time: O(n log n)
Examples
let map1 = ordmap!{1 => 1, 2 => 2};
let map2 = ordmap!{1 => 1, 2 => 2, 3 => 3};
assert!(map1.is_proper_submap(map2));
let map3 = ordmap!{1 => 1, 2 => 2};
let map4 = ordmap!{1 => 1, 2 => 2};
assert!(!map3.is_proper_submap(map4));
pub fn get_mut<BK>(&mut self, key: &BK) -> Option<&mut V>where
BK: Ord + ?Sized,
K: Borrow<BK>,
pub fn get_mut<BK>(&mut self, key: &BK) -> Option<&mut V>where BK: Ord + ?Sized, K: Borrow<BK>,
Get a mutable reference to the value for a key from a map.
Time: O(log n)
Examples
let mut map = ordmap!{123 => "lol"};
if let Some(value) = map.get_mut(&123) {
*value = "omg";
}
assert_eq!(
map.get(&123),
Some(&"omg")
);
pub fn get_prev_mut<BK>(&mut self, key: &BK) -> Option<(&K, &mut V)>where
BK: Ord + ?Sized,
K: Borrow<BK>,
pub fn get_prev_mut<BK>(&mut self, key: &BK) -> Option<(&K, &mut V)>where BK: Ord + ?Sized, K: Borrow<BK>,
Get the closest smaller entry in a map to a given key as a mutable reference.
If the map contains the given key, this is returned.
Otherwise, the closest key in the map smaller than the
given value is returned. If the smallest key in the map
is larger than the given key, None
is returned.
Examples
let mut map = ordmap![1 => 1, 3 => 3, 5 => 5];
if let Some((key, value)) = map.get_prev_mut(&4) {
*value = 4;
}
assert_eq!(ordmap![1 => 1, 3 => 4, 5 => 5], map);
pub fn get_next_mut<BK>(&mut self, key: &BK) -> Option<(&K, &mut V)>where
BK: Ord + ?Sized,
K: Borrow<BK>,
pub fn get_next_mut<BK>(&mut self, key: &BK) -> Option<(&K, &mut V)>where BK: Ord + ?Sized, K: Borrow<BK>,
Get the closest larger entry in a map to a given key as a mutable reference.
If the set contains the given value, this is returned.
Otherwise, the closest value in the set larger than the
given value is returned. If the largest value in the set
is smaller than the given value, None
is returned.
Examples
let mut map = ordmap![1 => 1, 3 => 3, 5 => 5];
if let Some((key, value)) = map.get_next_mut(&4) {
*value = 4;
}
assert_eq!(ordmap![1 => 1, 3 => 3, 5 => 4], map);
pub fn insert(&mut self, key: K, value: V) -> Option<V>
pub fn insert(&mut self, key: K, value: V) -> Option<V>
Insert a key/value mapping into a map.
This is a copy-on-write operation, so that the parts of the map’s structure which are shared with other maps will be safely copied before mutating.
If the map already has a mapping for the given key, the previous value is overwritten.
Time: O(log n)
Examples
let mut map = ordmap!{};
map.insert(123, "123");
map.insert(456, "456");
assert_eq!(
map,
ordmap!{123 => "123", 456 => "456"}
);
pub fn remove<BK>(&mut self, k: &BK) -> Option<V>where
BK: Ord + ?Sized,
K: Borrow<BK>,
pub fn remove<BK>(&mut self, k: &BK) -> Option<V>where BK: Ord + ?Sized, K: Borrow<BK>,
Remove a key/value mapping from a map if it exists.
Time: O(log n)
Examples
let mut map = ordmap!{123 => "123", 456 => "456"};
map.remove(&123);
map.remove(&456);
assert!(map.is_empty());
pub fn remove_with_key<BK>(&mut self, k: &BK) -> Option<(K, V)>where
BK: Ord + ?Sized,
K: Borrow<BK>,
pub fn remove_with_key<BK>(&mut self, k: &BK) -> Option<(K, V)>where BK: Ord + ?Sized, K: Borrow<BK>,
Remove a key/value pair from a map, if it exists, and return the removed key and value.
Time: O(log n)
pub fn update(&self, key: K, value: V) -> OrdMap<K, V>
pub fn update(&self, key: K, value: V) -> OrdMap<K, V>
Construct a new map by inserting a key/value mapping into a map.
If the map already has a mapping for the given key, the previous value is overwritten.
Time: O(log n)
Examples
let map = ordmap!{};
assert_eq!(
map.update(123, "123"),
ordmap!{123 => "123"}
);
pub fn alter<F>(&self, f: F, k: K) -> OrdMap<K, V>where
F: FnOnce(Option<V>) -> Option<V>,
pub fn alter<F>(&self, f: F, k: K) -> OrdMap<K, V>where F: FnOnce(Option<V>) -> Option<V>,
Update the value for a given key by calling a function with the current value and overwriting it with the function’s return value.
The function gets an Option<V>
and
returns the same, so that it can decide to delete a mapping
instead of updating the value, and decide what to do if the
key isn’t in the map.
Time: O(log n)
pub fn without<BK>(&self, k: &BK) -> OrdMap<K, V>where
BK: Ord + ?Sized,
K: Borrow<BK>,
pub fn without<BK>(&self, k: &BK) -> OrdMap<K, V>where BK: Ord + ?Sized, K: Borrow<BK>,
Remove a key/value pair from a map, if it exists.
Time: O(log n)
pub fn extract<BK>(&self, k: &BK) -> Option<(V, OrdMap<K, V>)>where
BK: Ord + ?Sized,
K: Borrow<BK>,
pub fn extract<BK>(&self, k: &BK) -> Option<(V, OrdMap<K, V>)>where BK: Ord + ?Sized, K: Borrow<BK>,
Remove a key/value pair from a map, if it exists, and return the removed value as well as the updated list.
Time: O(log n)
pub fn extract_with_key<BK>(&self, k: &BK) -> Option<(K, V, OrdMap<K, V>)>where
BK: Ord + ?Sized,
K: Borrow<BK>,
pub fn extract_with_key<BK>(&self, k: &BK) -> Option<(K, V, OrdMap<K, V>)>where BK: Ord + ?Sized, K: Borrow<BK>,
Remove a key/value pair from a map, if it exists, and return the removed key and value as well as the updated list.
Time: O(log n)
pub fn split<BK>(&self, split: &BK) -> (OrdMap<K, V>, OrdMap<K, V>)where
BK: Ord + ?Sized,
K: Borrow<BK>,
pub fn split<BK>(&self, split: &BK) -> (OrdMap<K, V>, OrdMap<K, V>)where BK: Ord + ?Sized, K: Borrow<BK>,
Split a map into two, with the left hand map containing keys
which are smaller than split
, and the right hand map
containing keys which are larger than split
.
The split
mapping is discarded.
pub fn split_lookup<BK>(
&self,
split: &BK
) -> (OrdMap<K, V>, Option<V>, OrdMap<K, V>)where
BK: Ord + ?Sized,
K: Borrow<BK>,
pub fn split_lookup<BK>( &self, split: &BK ) -> (OrdMap<K, V>, Option<V>, OrdMap<K, V>)where BK: Ord + ?Sized, K: Borrow<BK>,
Split a map into two, with the left hand map containing keys
which are smaller than split
, and the right hand map
containing keys which are larger than split
.
Returns both the two maps and the value of split
.
pub fn take(&self, n: usize) -> OrdMap<K, V>
pub fn take(&self, n: usize) -> OrdMap<K, V>
Construct a map with only the n
smallest keys from a given
map.
pub fn skip(&self, n: usize) -> OrdMap<K, V>
pub fn skip(&self, n: usize) -> OrdMap<K, V>
Construct a map with the n
smallest keys removed from a
given map.
pub fn without_min(&self) -> (Option<V>, OrdMap<K, V>)
pub fn without_min(&self) -> (Option<V>, OrdMap<K, V>)
Remove the smallest key from a map, and return its value as well as the updated map.
pub fn without_min_with_key(&self) -> (Option<(K, V)>, OrdMap<K, V>)
pub fn without_min_with_key(&self) -> (Option<(K, V)>, OrdMap<K, V>)
Remove the smallest key from a map, and return that key, its value as well as the updated map.
pub fn without_max(&self) -> (Option<V>, OrdMap<K, V>)
pub fn without_max(&self) -> (Option<V>, OrdMap<K, V>)
Remove the largest key from a map, and return its value as well as the updated map.
pub fn without_max_with_key(&self) -> (Option<(K, V)>, OrdMap<K, V>)
pub fn without_max_with_key(&self) -> (Option<(K, V)>, OrdMap<K, V>)
Remove the largest key from a map, and return that key, its value as well as the updated map.
Trait Implementations§
source§impl<T: FootprintDomain + PartialEq> AbstractDomain for AccessPathTrie<T>
impl<T: FootprintDomain + PartialEq> AbstractDomain for AccessPathTrie<T>
fn join(&mut self, other: &Self) -> JoinResult
source§impl<T: FootprintDomain> AccessPathMap<T> for AccessPathTrie<T>
impl<T: FootprintDomain> AccessPathMap<T> for AccessPathTrie<T>
fn get_access_path(&self, ap: AccessPath) -> Option<&T>
fn remove_access_path(&mut self, ap: AccessPath) -> Option<T>
source§impl<T: Clone + FootprintDomain> Clone for AccessPathTrie<T>
impl<T: Clone + FootprintDomain> Clone for AccessPathTrie<T>
source§fn clone(&self) -> AccessPathTrie<T>
fn clone(&self) -> AccessPathTrie<T>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<T: Debug + FootprintDomain> Debug for AccessPathTrie<T>
impl<T: Debug + FootprintDomain> Debug for AccessPathTrie<T>
source§impl<T: FootprintDomain> Default for AccessPathTrie<T>
impl<T: FootprintDomain> Default for AccessPathTrie<T>
source§impl<T: FootprintDomain> Deref for AccessPathTrie<T>
impl<T: FootprintDomain> Deref for AccessPathTrie<T>
source§impl<T: FootprintDomain> DerefMut for AccessPathTrie<T>
impl<T: FootprintDomain> DerefMut for AccessPathTrie<T>
source§impl<T: PartialEq + FootprintDomain> PartialEq<AccessPathTrie<T>> for AccessPathTrie<T>
impl<T: PartialEq + FootprintDomain> PartialEq<AccessPathTrie<T>> for AccessPathTrie<T>
source§fn eq(&self, other: &AccessPathTrie<T>) -> bool
fn eq(&self, other: &AccessPathTrie<T>) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl<T: PartialOrd + FootprintDomain> PartialOrd<AccessPathTrie<T>> for AccessPathTrie<T>
impl<T: PartialOrd + FootprintDomain> PartialOrd<AccessPathTrie<T>> for AccessPathTrie<T>
source§fn partial_cmp(&self, other: &AccessPathTrie<T>) -> Option<Ordering>
fn partial_cmp(&self, other: &AccessPathTrie<T>) -> 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 moreimpl<T: Eq + FootprintDomain> Eq for AccessPathTrie<T>
impl<T: FootprintDomain> StructuralEq for AccessPathTrie<T>
impl<T: FootprintDomain> StructuralPartialEq for AccessPathTrie<T>
Auto Trait Implementations§
impl<T> RefUnwindSafe for AccessPathTrie<T>where T: RefUnwindSafe,
impl<T> Send for AccessPathTrie<T>where T: Send + Sync,
impl<T> Sync for AccessPathTrie<T>where T: Send + Sync,
impl<T> Unpin for AccessPathTrie<T>where T: Unpin,
impl<T> UnwindSafe for AccessPathTrie<T>where T: UnwindSafe + RefUnwindSafe,
Blanket Implementations§
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
key
and return true
if they are equal.