diff --git a/Cargo.lock b/Cargo.lock index 9cb48da..062156f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 4 + [[package]] name = "bincode" version = "1.3.3" @@ -10,10 +12,22 @@ dependencies = [ ] [[package]] -name = "fuchsia-cprng" -version = "0.1.1" +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "getrandom" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] [[package]] name = "ipnet" @@ -34,15 +48,24 @@ dependencies = [ "bincode", "ipnet", "ipnetwork", - "rand 0.3.23", + "rand", "serde", ] [[package]] name = "libc" -version = "0.2.135" +version = "0.2.180" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] [[package]] name = "proc-macro2" @@ -63,50 +86,38 @@ dependencies = [ ] [[package]] -name = "rand" -version = "0.3.23" +name = "r-efi" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" -dependencies = [ - "libc", - "rand 0.4.6", -] +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "rand" -version = "0.4.6" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ - "fuchsia-cprng", - "libc", - "rand_core 0.3.1", - "rdrand", - "winapi", + "rand_chacha", + "rand_core", ] [[package]] -name = "rand_core" -version = "0.3.1" +name = "rand_chacha" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ - "rand_core 0.4.2", + "ppv-lite86", + "rand_core", ] [[package]] name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" - -[[package]] -name = "rdrand" -version = "0.4.0" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ - "rand_core 0.3.1", + "getrandom", ] [[package]] @@ -147,23 +158,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] -name = "winapi" -version = "0.3.9" +name = "wasip2" +version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "wit-bindgen", ] [[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" +name = "wit-bindgen" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" +name = "zerocopy" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml index 2d15d2f..d3bd85d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,6 +8,7 @@ readme = "README.md" documentation = "https://docs.rs/iprange/" categories = ["network-programming"] license = "MIT" +edition = "2024" [dependencies] ipnet = { version = "2", optional = true } @@ -18,5 +19,5 @@ serde = { version = "1", features = ["derive"], optional = true } default = ["ipnet"] [dev-dependencies] -rand = "0.3.17" -bincode = "1" +rand = "0.9.2" +bincode = "1.3.3" diff --git a/benches/bench.rs b/benches/bench.rs index b91a999..673c8d7 100644 --- a/benches/bench.rs +++ b/benches/bench.rs @@ -1,13 +1,10 @@ #![feature(test)] -extern crate ipnet; -extern crate iprange; -extern crate rand; extern crate test; use ipnet::{Ipv4Net, Ipv6Net}; use iprange::*; -use rand::{Rng, SeedableRng, StdRng}; +use rand::{RngCore, SeedableRng, rngs::StdRng}; use std::fs::File; use std::io::{BufRead, BufReader}; use std::net::{Ipv4Addr, Ipv6Addr}; @@ -50,12 +47,18 @@ fn chnlists_v6() -> Vec { } fn rand_ipv4_list(n: usize) -> Vec { - let mut rng = StdRng::from_seed(&[1926, 8, 17]); + let mut rng = StdRng::from_seed([ + 19, 26, 8, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, + ]); (0..n).map(|_| rng.next_u32().into()).collect() } fn rand_ipv6_list(n: usize) -> Vec { - let mut rng = StdRng::from_seed(&[1926, 8, 17]); + let mut rng = StdRng::from_seed([ + 19, 26, 8, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, + ]); (0..n) .map(|_| { let mut buf = [0u8; 16]; diff --git a/src/ipnet.rs b/src/ipnet.rs index 4652471..06c8e7d 100644 --- a/src/ipnet.rs +++ b/src/ipnet.rs @@ -94,7 +94,7 @@ impl TraverseState for Ipv4TraverseState { #[inline] fn build(&self) -> Self::Net { - Ipv4Net::new(self.prefix.into(), self.prefix_len as u8).unwrap() + Ipv4Net::new(self.prefix.into(), self.prefix_len).unwrap() } } @@ -218,7 +218,7 @@ impl TraverseState for Ipv6TraverseState { #[inline] fn build(&self) -> Self::Net { - Ipv6Net::new(self.prefix.into(), self.prefix_len as u8).unwrap() + Ipv6Net::new(self.prefix.into(), self.prefix_len).unwrap() } } diff --git a/src/lib.rs b/src/lib.rs index 42dbc1b..d69f428 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -36,13 +36,8 @@ //! [`intersect`]: struct.IpRange.html#method.intersect //! [`exclude`]: struct.IpRange.html#method.exclude -#[cfg(feature = "ipnet")] -extern crate ipnet; -#[cfg(feature = "ipnetwork")] -extern crate ipnetwork; #[cfg(feature = "serde")] -#[macro_use] -extern crate serde; +use serde::{Deserialize, Serialize}; use std::collections::VecDeque; use std::fmt; @@ -203,7 +198,7 @@ impl IpRange { /// /// The returned `IpRange` is simplified. pub fn merge(&self, other: &IpRange) -> Self { - self.into_iter().chain(other.into_iter()).collect() + self.into_iter().chain(other).collect() } /// Returns a new `IpRange` which contains all networks @@ -244,7 +239,7 @@ impl IpRange { } /// Returns the iterator to `&self`. - pub fn iter(&self) -> IpRangeIter { + pub fn iter(&self) -> IpRangeIter<'_, N> { self.into_iter() } } @@ -492,11 +487,7 @@ where } } - if node.is_leaf() { - Some(network) - } else { - None - } + if node.is_leaf() { Some(network) } else { None } // The commented code below is more clear. However, this uses a // commented method `search` in IpTrieNode, and the performance