# Impl Step for Ipv{4,6}Addr

**URL:** <https://internals.rust-lang.org/t/impl-step-for-ipv-4-6-addr/19729>\
**Category:** libs\
**Created:** [October 19, 2023, 2:13pm UTC](https://internals.rust-lang.org/t/impl-step-for-ipv-4-6-addr/19729 "2023-10-19T14:13:01Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![mdHMUpeyf8yluPfXI](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@mdHMUpeyf8yluPfXI](https://internals.rust-lang.org/u/mdHMUpeyf8yluPfXI)\
**Post date:** [October 19, 2023, 2:13pm UTC](https://internals.rust-lang.org/t/impl-step-for-ipv-4-6-addr/19729/1 "2023-10-19T14:13:01Z")

</div>

I think it would be useful if you want to iterate over IP ranges, like nmap. I think it ca be implemented by delegating to `<u32 as Step>` (`<u128 as Step>` respectively). I've written a draft here: [Rust Playground](https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=539ad03cc8f44d5af8a96b5f54ed59e4). The implementation in std/core would obviously not need a newtype.

See also [Pre-RFC: Implementing Add, Sub, BitAnd, BitOr for IpAddr, Ipv4Addr, Ipv6Addr](https://internals.rust-lang.org/t/pre-rfc-implementing-add-sub-bitand-bitor-for-ipaddr-ipv4addr-ipv6addr/5833) and [Pre-RFC: Bitwise Operations for IpAddr, Ipv4Addr, Ipv6Addr](https://internals.rust-lang.org/t/pre-rfc-bitwise-operations-for-ipaddr-ipv4addr-ipv6addr/12552)

---

<div class="post-metadata">

**Author:** ![mdHMUpeyf8yluPfXI](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@mdHMUpeyf8yluPfXI](https://internals.rust-lang.org/u/mdHMUpeyf8yluPfXI)\
**Post date:** [October 19, 2023, 3:37pm UTC](https://internals.rust-lang.org/t/impl-step-for-ipv-4-6-addr/19729/2 "2023-10-19T15:37:16Z")

</div>

Motivation: [ThreadPool Loop w/ std::net TCP Connections Timing Out? - help - The Rust Programming Language Forum](https://users.rust-lang.org/t/threadpool-loop-w-std-net-tcp-connections-timing-out/101409/)

---

<div class="post-metadata">

**Author:** ![scottmcm](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/scottmcm/32/2355_2.png) [@scottmcm](https://internals.rust-lang.org/u/scottmcm)\
**Post date:** [October 19, 2023, 4:24pm UTC](https://internals.rust-lang.org/t/impl-step-for-ipv-4-6-addr/19729/3 "2023-10-19T16:24:20Z")

</div>

The first step (: to getting that would be an ACP: [Feature lifecycle - Standard library developers Guide](https://std-dev-guide.rust-lang.org/development/feature-lifecycle.html?highlight=acp#suitability-for-the-standard-library)

---

<div class="post-metadata">

**Author:** ![dtolnay](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/dtolnay/32/1447_2.png) [@dtolnay](https://internals.rust-lang.org/u/dtolnay)\
**Post date:** [October 19, 2023, 6:25pm UTC](https://internals.rust-lang.org/t/impl-step-for-ipv-4-6-addr/19729/4 "2023-10-19T18:25:06Z")

</div>

This is already implemented in 1.74. [Rust Playground](https://play.rust-lang.org/?version=beta&mode=debug&edition=2021&gist=dc8d23e327bcac31fed057fc76d85ac3)

---

<div class="post-metadata">

**Author:** ![mdHMUpeyf8yluPfXI](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@mdHMUpeyf8yluPfXI](https://internals.rust-lang.org/u/mdHMUpeyf8yluPfXI)\
**Post date:** [October 19, 2023, 7:18pm UTC](https://internals.rust-lang.org/t/impl-step-for-ipv-4-6-addr/19729/5 "2023-10-19T19:18:18Z")

</div>

Awesome, thanks.

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/system/32/14092_2.png) [@system](https://internals.rust-lang.org/u/system)\
**Post date:** [January 17, 2024, 7:18pm UTC](https://internals.rust-lang.org/t/impl-step-for-ipv-4-6-addr/19729/6 "2024-01-17T19:18:39Z")

</div>

Closed on January 17, 2024, 7:18pm UTC

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.
