#查找表 #IPv4 #IPv6 #网络 #IP #IP地址 #后端

ip_network_table

IPv4和IPv6网络快速查找表

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网络编程

Download history 20576/week @ 2024-03-15 19369/week @ 2024-03-22 16796/week @ 2024-03-29 19811/week @ 2024-04-05 19813/week @ 2024-04-12 15233/week @ 2024-04-19 10550/week @ 2024-04-26 13369/week @ 2024-05-03 15039/week @ 2024-05-10 14084/week @ 2024-05-17 11137/week @ 2024-05-24 13568/week @ 2024-05-31 13030/week @ 2024-06-07 13913/week @ 2024-06-14 13339/week @ 2024-06-21 8704/week @ 2024-06-28

51,104 每月下载量
15 个crate(直接使用7个) 中使用

BSD-2-Clause

25KB
263

ip_network_table

IPv4和IPv6网络快速查找表。

Documentation Build Status Coverage Status Crates.io

描述

该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