42 releases

new 0.4.10 Mar 19, 2025
0.4.8 Nov 22, 2024
0.4.3 Jun 4, 2024
0.4.1 Dec 15, 2023
0.3.3 Jul 22, 2023

#1057 in Network programming

Download history 50/week @ 2024-11-29 92/week @ 2024-12-06 69/week @ 2024-12-13 7/week @ 2024-12-20 51/week @ 2025-01-03 12/week @ 2025-01-10 8/week @ 2025-01-17 11/week @ 2025-01-24 11/week @ 2025-01-31 23/week @ 2025-02-07 102/week @ 2025-02-14 48/week @ 2025-02-21 61/week @ 2025-02-28 80/week @ 2025-03-07 209/week @ 2025-03-14

399 downloads per month
Used in pistol

MIT license

33KB
726 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

~225–670KB
~15K SLoC