pub struct FullMap<K: BitString + Clone, V> { /* private fields */ }
Expand description
Map bit string prefixes to values
This allows overriding values based on “better matching” longer prefixes in an efficient way.
Network routing tables are usually implemented that way: there often is a default
route for 0.0.0.0/0
and then a “more specific” for the LAN, e.g. 192.168.0.0/24
.
(I.e. a route is a map entry for a prefix to a “nexthop specification”, as in how
to forward a packet matching the entry. The “most specific” (longest) matching
route is used.)
This is implemented as a crate::tree::Tree
where all nodes can have an optional value;
branches where no node has a value are pruned.
Implementations§
source§impl<K, V> FullMap<K, V>
impl<K, V> FullMap<K, V>
sourcepub fn entry(&mut self, key: K) -> Entry<'_, K, V>
pub fn entry(&mut self, key: K) -> Entry<'_, K, V>
Gets the given key’s corresponding entry in the map for in-place manipulation.
sourcepub fn insert(&mut self, key: K, value: V) -> Option<V>
pub fn insert(&mut self, key: K, value: V) -> Option<V>
Inserts a key-value pair into the map.
If the map did not have this key present, None is returned.
If the map did have this key present, the value is updated, and the old value is returned.
sourcepub fn remove(&mut self, key: &K) -> Option<V>
pub fn remove(&mut self, key: &K) -> Option<V>
Removes a key from the map, returning the stored key and value if the key was previously in the map.
sourcepub fn get(&self, key: &K) -> Option<&V>
pub fn get(&self, key: &K) -> Option<&V>
Returns a reference to the value corresponding to the key.
sourcepub fn get_mut(&mut self, key: &K) -> Option<&mut V>
pub fn get_mut(&mut self, key: &K) -> Option<&mut V>
Returns a mutable reference to the value corresponding to the key.
sourcepub fn most_specific(&self, key: &K) -> Option<(&K, &V)>
pub fn most_specific(&self, key: &K) -> Option<(&K, &V)>
Returns a reference to the key-value pair for the longest prefix of the key in the map.
sourcepub fn remove_tree(&mut self, key: K)
pub fn remove_tree(&mut self, key: K)
Remove all prefixes equal or longer than given key
sourcepub fn path(&self, key: K) -> IterPath<'_, K, V> ⓘ
pub fn path(&self, key: K) -> IterPath<'_, K, V> ⓘ
Iterate over all prefixes and their values on the path to a key
sourcepub fn path_mut(&mut self, key: K) -> IterPathMut<'_, K, V> ⓘ
pub fn path_mut(&mut self, key: K) -> IterPathMut<'_, K, V> ⓘ
Iterate over all prefixes and their mutable values on the path to a key
sourcepub fn iter(&self) -> IterMap<'_, K, V> ⓘ
pub fn iter(&self) -> IterMap<'_, K, V> ⓘ
Iterate over all (aggregated) prefixes and their values
sourcepub fn iter_mut(&mut self) -> IterMutMap<'_, K, V> ⓘ
pub fn iter_mut(&mut self) -> IterMutMap<'_, K, V> ⓘ
Iterate over all (aggregated) prefixes and their mutable values
Trait Implementations§
Auto Trait Implementations§
impl<K, V> Freeze for FullMap<K, V>
impl<K, V> RefUnwindSafe for FullMap<K, V>where
K: RefUnwindSafe,
V: RefUnwindSafe,
impl<K, V> Send for FullMap<K, V>
impl<K, V> Sync for FullMap<K, V>
impl<K, V> Unpin for FullMap<K, V>
impl<K, V> UnwindSafe for FullMap<K, V>where
K: UnwindSafe,
V: UnwindSafe,
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)