{"id":16819439,"url":"https://github.com/jakubonderka/ip_network","last_synced_at":"2025-05-09T00:05:27.054Z","repository":{"id":46122940,"uuid":"104925216","full_name":"JakubOnderka/ip_network","owner":"JakubOnderka","description":"Rust crate for IPv4 and IPv6 network structs.","archived":false,"fork":false,"pushed_at":"2024-07-16T17:50:42.000Z","size":186,"stargazers_count":25,"open_issues_count":5,"forks_count":8,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-09T00:05:02.580Z","etag":null,"topics":["address","ip","ipv4","ipv6","network","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JakubOnderka.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-26T18:51:48.000Z","updated_at":"2025-03-27T15:08:22.000Z","dependencies_parsed_at":"2024-10-25T18:38:54.537Z","dependency_job_id":"fac9afc4-253f-421d-b732-b81bdca9e4e4","html_url":"https://github.com/JakubOnderka/ip_network","commit_stats":{"total_commits":174,"total_committers":3,"mean_commits":58.0,"dds":"0.25287356321839083","last_synced_commit":"950fe3ef43a348a59605fac8a98b1aa7c19791d2"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakubOnderka%2Fip_network","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakubOnderka%2Fip_network/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakubOnderka%2Fip_network/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakubOnderka%2Fip_network/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JakubOnderka","download_url":"https://codeload.github.com/JakubOnderka/ip_network/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253166519,"owners_count":21864476,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["address","ip","ipv4","ipv6","network","rust"],"created_at":"2024-10-13T10:53:21.544Z","updated_at":"2025-05-09T00:05:27.028Z","avatar_url":"https://github.com/JakubOnderka.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"ip_network\n========\n\nIPv4 and IPv6 network structs.\n\n[![Documentation](https://docs.rs/ip_network/badge.svg)](https://docs.rs/ip_network)\n[![Build Status](https://travis-ci.com/JakubOnderka/ip_network.svg?branch=master)](https://travis-ci.com/JakubOnderka/ip_network)\n[![Coverage Status](https://coveralls.io/repos/github/JakubOnderka/ip_network/badge.svg?branch=master)](https://coveralls.io/github/JakubOnderka/ip_network?branch=master)\n[![Crates.io](https://img.shields.io/crates/v/ip_network.svg)](https://crates.io/crates/ip_network)\n\n## Usage\n\nAdd this to your `Cargo.toml`:\n\n```toml\n[dependencies]\nip_network = \"0.4\"\n```\n\nthis to your crate root (not necessary when your project is Rust 2018 edition):\n\n```rust\nextern crate ip_network;\n```\n\nand then you can use it like this:\n\n```rust\nuse std::net::Ipv4Addr;\nuse ip_network::Ipv4Network;\n\nlet ip_network = Ipv4Network::new(Ipv4Addr::new(192, 168, 1, 0), 24)?;\nassert_eq!(Ipv4Addr::new(192, 168, 1, 0), ip_network.network_address());\nassert_eq!(24, ip_network.netmask());\nassert_eq!(254, ip_network.hosts().len());\nassert_eq!(\"192.168.1.0/24\", ip_network.to_string());\n```\n\nMinimal required version of Rust compiler is:\n- 1.31 for version 0.3 and newer (because of 2018 edition),\n- 1.26 for version 0.2 (because of support u128 data type),\n- for older compiler you can use 0.1 version.   \n\n## Optional features\n\nWhen using this crate, you can choose to compile with these features:\n\n### Serde support\n\nTo enable serialization and deserialization by [Serde framework](https://serde.rs), \njust add `serde` feature to package in your `Cargo.toml`:\n\n```toml\n[dependencies]\nip_network = { version = \"0.4\", features = [\"serde\"] }\n``` \n\n### Diesel support\n\nTo enable support for [diesel](https://diesel.rs) [CIDR type] for PostgreSQL, \njust add `diesel` feature to package in your `Cargo.toml`:\n\n```toml\n[dependencies]\nip_network = { version = \"0.4\", features = [\"diesel\"] }\n``` \n\nYou can then use `ip_network::diesel_support::PqCidrExtensionMethods` trait for CIDR operators support.\n\n\n### Postgres support\n\nTo enable support for [postgres](https://github.com/sfackler/rust-postgres) crate [CIDR type], \njust add `postgres` feature to package in your `Cargo.toml`:\n\n```toml\n[dependencies]\nip_network = { version = \"0.4\", features = [\"postgres\"] }\n``` \n\n## Comparison with `ipnetwork` crate\n\nSimilar functionality also provides [ipnetwork](https://github.com/achanda/ipnetwork) crate. \nThis table shows the differences between these two crates:\n\n\n| Feature              | ip_network | ipnetwork |\n|----------------------|------------|-----------|\n| IPv4                 |      ✓     |     ✓     |\n| IPv6                 |      ✓     |     ✓     |\n| IPv4 and IPv6 enum   |      ✓     |     ✓     |\n| IPv4 network types   |      ✓     |           |\n| IPv6 network types   |      ✓     |           |\n| Hosts iterator       |      ✓     |     ✓     | \n| Subnetworks iterator |      ✓     |           |\n| Check host bits set  |      ✓     |           |\n| Serde                |      ✓     |     ✓     |\n| Serde binary         |      ✓     |           |\n| Diesel CIDR          |      ✓     |     ✓     |\n| Diesel operators     |      ✓     |           |\n| Postgres CIDR        |      ✓     |           |\n| IPv4 string parsing  | 65 ns      | 379 ns    |\n| IPv6 string parsing  | 126 ns     | 434 ns    |\n| IPv4 contains method | 7 ns       | 15 ns     |\n| IPv6 contains method | 28 ns      | 49 ns     |\n\n[CIDR type]: https://www.postgresql.org/docs/current/datatype-net-types.html#DATATYPE-CIDR\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakubonderka%2Fip_network","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakubonderka%2Fip_network","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakubonderka%2Fip_network/lists"}