4个版本
0.2.0 | 2021年7月12日 |
---|---|
0.1.2 | 2020年3月30日 |
0.1.1 | 2019年7月8日 |
0.1.0 | 2019年5月18日 |
#1174 在 网络编程 中
51,104 每月下载量
在 15 个crate(直接使用7个) 中使用
25KB
263 行
ip_network_table
IPv4和IPv6网络快速查找表。
描述
该crate提供存储和检索IPv4和IPv6网络前缀的功能。
目前,它使用ip_network
crate,该crate提供IP网络数据结构和treebitmap
(分支)的后端,提供快速查找时间和小的内存占用。后端可以在未来的版本中更改。
用法
将此添加到您的Cargo.toml
[dependencies]
ip_network = "0.4"
ip_network_table = "0.2"
添加到您的crate根目录(当您的项目是Rust 2018版本时不是必需的)
extern crate ip_network;
extern crate ip_network_table;
然后您可以使用它如下
use std::net::{IpAddr, Ipv6Addr};
use ip_network::{IpNetwork, Ipv6Network};
use ip_network_table::IpNetworkTable;
let mut table = IpNetworkTable::new();
let network = IpNetwork::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.clone(), "foo"), None);
// Get value for network from table
assert_eq!(table.longest_match(ip_address), Some((network, &"foo")));
所需的最小Rust编译器版本是1.31(因为ip_network
crate)。
依赖项
~235KB