15个版本

0.4.1 2021年11月12日
0.4.0 2021年7月12日
0.3.4 2019年5月3日
0.3.3 2019年2月25日
0.1.1 2017年9月27日

#58网络编程

Download history 54329/week @ 2024-03-14 61434/week @ 2024-03-21 56996/week @ 2024-03-28 67133/week @ 2024-04-04 61529/week @ 2024-04-11 61372/week @ 2024-04-18 52463/week @ 2024-04-25 48780/week @ 2024-05-02 50025/week @ 2024-05-09 50107/week @ 2024-05-16 58791/week @ 2024-05-23 58226/week @ 2024-05-30 51224/week @ 2024-06-06 56471/week @ 2024-06-13 55481/week @ 2024-06-20 45347/week @ 2024-06-27

219,192 每月下载量
用于 203 个Crates (24 直接)

BSD-2-Clause

150KB
2.5K SLoC

ip_network

IPv4和IPv6网络结构体。

Documentation Build Status Coverage Status Crates.io

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
ip_network = "0.4"

添加到您的crate根目录(当您的项目是Rust 2018版本时不是必需的)

extern crate ip_network;

然后您可以使用它如下所示

use std::net::Ipv4Addr;
use ip_network::Ipv4Network;

let ip_network = Ipv4Network::new(Ipv4Addr::new(192, 168, 1, 0), 24)?;
assert_eq!(Ipv4Addr::new(192, 168, 1, 0), ip_network.network_address());
assert_eq!(24, ip_network.netmask());
assert_eq!(254, ip_network.hosts().len());
assert_eq!("192.168.1.0/24", ip_network.to_string());

所需的最小Rust编译器版本是

  • 0.3版本及更高版本需要1.31(因为2018版本),
  • 0.2版本需要1.26(因为支持u128数据类型),
  • 对于旧编译器,您可以使用0.1版本。

可选功能

在使用此crate时,您可以选择编译以下功能

Serde支持

要启用由Serde框架提供的序列化和反序列化,只需在您的Cargo.toml中的包中添加serde功能即可

[dependencies]
ip_network = { version = "0.4", features = ["serde"] }

Diesel支持

要启用对diesel CIDR类型的支持,只需在您的Cargo.toml中的包中添加diesel功能即可

[dependencies]
ip_network = { version = "0.4", features = ["diesel"] }

然后您可以使用ip_network::diesel_support::PqCidrExtensionMethods trait来支持CIDR运算符。

Postgres支持

要启用对postgres crate CIDR类型的支持,只需在您的Cargo.toml中的包中添加postgres功能即可

[dependencies]
ip_network = { version = "0.4", features = ["postgres"] }

ipnetwork crate的比较

提供类似功能的还有ipnetwork crate。下表显示了这两个crate之间的差异

功能 ip_network ipnetwork
IPv4
IPv6
IPv4和IPv6枚举
IPv4网络类型
IPv6网络类型
主机迭代器
子网迭代器
检查主机位设置
Serde
Serde二进制
Diesel CIDR
Diesel运算符
Postgres CIDR
IPv4 字符串解析 65 纳秒 379 纳秒
IPv6 字符串解析 126 纳秒 434 纳秒
IPv4 包含方法 7 纳秒 15 纳秒
IPv6 包含方法 28 纳秒 49 纳秒

依赖项

~0–9.5MB
~89K SLoC