5个不稳定版本

0.2.0-beta.22024年5月2日
0.2.0-beta.12024年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

MIT 许可证

48KB
662

ipnet-trie

IPv4和IPv6网络快速查找前缀树。

Rust Documentation Crates.io License

描述

此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