5个不稳定版本
0.2.0-beta.2 | 2024年5月2日 |
---|---|
0.2.0-beta.1 | 2024年2月21日 |
0.1.0 | 2024年1月16日 |
0.0.2 | 2023年8月1日 |
0.0.1 | 2023年8月1日 |
#1745 in 网络编程
用于 2 个crates(通过bgpkit-commons)
48KB
662 行
ipnet-trie
IPv4和IPv6网络快速查找前缀树。
描述
此crate提供IPv4和IPv6网络前缀的存储和检索。
目前,它使用ipnet
crate作为IP网络数据结构,以及prefix-trie
作为后端,提供快速的查找时间和小型的内存占用。
特性标志
export
:启用将前缀树导出到字节或写入器,并从字节或读取器导入。
使用方法
将此添加到您的Cargo.toml
[dependencies]
ipnet = "2.8"
ipnet-trie = "0.2"
然后您可以使用它如下
use std::net::{IpAddr, Ipv6Addr};
use ipnet::{IpNet, Ipv6Net};
use ipnet_trie::IpnetTrie;
let mut table = IpnetTrie::new();
let network = IpNet::from(Ipv6Net::new(Ipv6Addr::new(0x2001, 0xdb8, 0xdead, 0xbeef, 0, 0, 0, 0), 64).unwrap());
let ip_address = Ipv6Addr::new(0x2001, 0xdb8, 0xdead, 0xbeef, 0, 0, 0, 0x1);
assert_eq!(table.insert(network, "foo"), None);
// Get value for network from table
assert_eq!(table.longest_match(ip_address), Some((network, &"foo")));
依赖项
~360–495KB