#ip-address #subnet #net #iterator

subnetwork

Return all ip addresses of a subnetwork

40 releases

0.4.8 Nov 22, 2024
0.4.4 Aug 2, 2024
0.4.3 Jun 4, 2024
0.4.1 Dec 15, 2023
0.3.3 Jul 22, 2023

#1336 in Network programming

Download history 46/week @ 2024-09-18 111/week @ 2024-09-25 115/week @ 2024-10-02 18/week @ 2024-10-09 42/week @ 2024-10-16 37/week @ 2024-10-23 239/week @ 2024-10-30 200/week @ 2024-11-06 14/week @ 2024-11-13 227/week @ 2024-11-20 32/week @ 2024-11-27 49/week @ 2024-12-04 112/week @ 2024-12-11 35/week @ 2024-12-18 25/week @ 2025-01-01

179 downloads per month
Used in pistol

MIT license

32KB
725 lines

subnetwork

Returns an iterator that iterates over all subnet IPs.

Rust

Example 1

use std::net::Ipv4Addr;
use subnetwork::Ipv4Pool;

fn main() {
    let ipv4_pool = Ipv4Pool::from("192.168.1.0/24").unwrap();
    for i in ipv4_pool {
        println!("{:?}", i);
    }
    let ipv4 = Ipv4Addr::new(192, 168, 1, 1);
    let ret = ipv4_pool.contain(ipv4);
    assert_eq!(ret, true);
}

Example 2

use std::net::Ipv4Addr;
use subnetwork::CrossIpv4Pool;

fn main() {
    let start = Ipv4Addr::new(192, 168, 1, 1);
    let end = Ipv4Addr::new(192, 168, 3, 254);
    let ips = CrossIpv4Pool::new(start, end).unwrap();
    for i in ips {
        println!("{:?}", i);
    }
}

Benchmark

You can see how our performance compares to other similar libraries here.


lib.rs:

The subnetwork crate provides a set of APIs to work with IP CIDRs in Rust.

Dependencies

~255–710KB
~17K SLoC