pub struct IpRTrieMap<V> {
pub ipv4: Ipv4RTrieMap<V>,
pub ipv6: Ipv6RTrieMap<V>,
}Expand description
A radix trie map that mix both Ipv4 and Ipv6 prefixes
Fields§
§ipv4: Ipv4RTrieMap<V>§ipv6: Ipv6RTrieMap<V>Implementations§
Source§impl<V> IpRTrieMap<V>
impl<V> IpRTrieMap<V>
pub fn with_roots(ipv4: V, ipv6: V) -> Self
Source§impl<V> IpRTrieMap<V>
impl<V> IpRTrieMap<V>
Sourcepub fn len(&self) -> NonZeroUsize
pub fn len(&self) -> NonZeroUsize
Returns the size of the map.
Notice that it always greater or equals two since two top prefixes are always present in the map (one for Ipv4 and the other for Ipv6)
Sourcepub fn compress(self) -> IpLCTrieMap<V>
pub fn compress(self) -> IpLCTrieMap<V>
Compress this Patricia trie in a LC-Trie.
For lookup algorithms, a Patricia trie performs unit bit checking and LC-Trie performs multi bits checking. So the last one is more performant but it cannot be modified (no insertion or removal operations are provided).
pub fn shrink_to_fit(&mut self)
Sourcepub fn get(&self, ipnet: &IpNet) -> Option<&V>
pub fn get(&self, ipnet: &IpNet) -> Option<&V>
Gets the value associated with an exact match of the key.
To access to the longest prefix match, use Self::lookup.
To get a mutable access to a value, use Self::get_mut.
Sourcepub fn get_mut(&mut self, ipnet: &IpNet) -> Option<&mut V>
pub fn get_mut(&mut self, ipnet: &IpNet) -> Option<&mut V>
Gets a mutable access to the value associated with an exact match of the key.
To access to the longest prefix match, use Self::lookup_mut.
To get a mutable access to a value, use Self::get_mut.
Sourcepub fn lookup(&self, ipnet: &IpNet) -> (IpNet, &V)
pub fn lookup(&self, ipnet: &IpNet) -> (IpNet, &V)
Gets the value associated with the longest prefix match of the key.
As the top prefix always matches, the lookup never fails.
To access to the exact prefix match, use Self::get.
To get a mutable access to a value, use Self::lookup_mut.
Sourcepub fn lookup_mut(&mut self, ipnet: &IpNet) -> (IpNet, &mut V)
pub fn lookup_mut(&mut self, ipnet: &IpNet) -> (IpNet, &mut V)
Gets a mutable access to the value associated with a longest prefix match of the key.
To access to the exact prefix match, use Self::get_mut.
Sourcepub fn insert(&mut self, ipnet: IpNet, v: V) -> Option<V>
pub fn insert(&mut self, ipnet: IpNet, v: V) -> Option<V>
Inserts a new entry in the map.
If the specified key already exists in the map, then the previous associated value is replaced by the new one and is returned.
Sourcepub fn remove(&mut self, ipnet: &IpNet) -> Option<V>
pub fn remove(&mut self, ipnet: &IpNet) -> Option<V>
Removes a previously inserted prefix (exact match).
§Panic
Panics if trying to remove the root prefix.
Sourcepub fn iter(&self) -> impl Iterator<Item = (IpNet, &V)> + '_
pub fn iter(&self) -> impl Iterator<Item = (IpNet, &V)> + '_
Iterates over all the entries.
For a mutable access of values, use Self::iter_mut
Sourcepub fn iter_mut(&mut self) -> impl Iterator<Item = (IpNet, &mut V)> + '_
pub fn iter_mut(&mut self) -> impl Iterator<Item = (IpNet, &mut V)> + '_
Iterates over all the entries with a mutable access to values.
Sourcepub fn prefixes(&self) -> IpRTrieSet
pub fn prefixes(&self) -> IpRTrieSet
Gets a set of copy of all the keys in a trie set.
Trait Implementations§
Source§impl<V: Clone> Clone for IpRTrieMap<V>
impl<V: Clone> Clone for IpRTrieMap<V>
Source§fn clone(&self) -> IpRTrieMap<V>
fn clone(&self) -> IpRTrieMap<V>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<V: Default> Default for IpRTrieMap<V>
impl<V: Default> Default for IpRTrieMap<V>
Source§fn default() -> IpRTrieMap<V>
fn default() -> IpRTrieMap<V>
Source§impl<V> Extend<(IpNet, V)> for IpRTrieMap<V>
impl<V> Extend<(IpNet, V)> for IpRTrieMap<V>
Source§fn extend<I: IntoIterator<Item = (IpNet, V)>>(&mut self, iter: I)
fn extend<I: IntoIterator<Item = (IpNet, V)>>(&mut self, iter: I)
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one)Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one)Source§impl<V> Extend<(Ipv4Net, V)> for IpRTrieMap<V>
impl<V> Extend<(Ipv4Net, V)> for IpRTrieMap<V>
Source§fn extend<I: IntoIterator<Item = (Ipv4Net, V)>>(&mut self, iter: I)
fn extend<I: IntoIterator<Item = (Ipv4Net, V)>>(&mut self, iter: I)
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one)Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one)Source§impl<V> Extend<(Ipv6Net, V)> for IpRTrieMap<V>
impl<V> Extend<(Ipv6Net, V)> for IpRTrieMap<V>
Source§fn extend<I: IntoIterator<Item = (Ipv6Net, V)>>(&mut self, iter: I)
fn extend<I: IntoIterator<Item = (Ipv6Net, V)>>(&mut self, iter: I)
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one)Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one)