# Rust IPGen Library Official implementation of the [IPGen Spec] in [Rust] [![Build Status](https://travis-ci.org/ipgen/rust.svg?branch=main)](https://travis-ci.org/ipgen/rust) [![Latest Version](https://img.shields.io/crates/v/ipgen.svg)](https://crates.io/crates/ipgen) [![Docs](https://docs.rs/ipgen/badge.svg)](https://docs.rs/ipgen) IPGen is a library for generating unique and reproducible IP addresses in [Rust]. The IP addresses generated by this library are highly unique (depending on your subnet prefix), yet if you pass it the same input it will produce the same IP address. You can also generate the IP addresses using our [command line tool]. [IPGen Spec]: https://github.com/ipgen/spec [command line tool]: https://github.com/ipgen/cli [Rust]: https://www.rust-lang.org ## Getting Started Add `ipgen` as a dependency in your `Cargo.toml` file. ```toml [dependencies] ipgen = "1" ``` Use it in your program as follows:- ```rust fn main() -> ipgen::Result<()> { // Compute subnet ID let subnet = ipgen::subnet("App 1")?; assert_eq!(subnet, "ba3d"); // Or compute an IPv6 address // Note you can also pass in an IPv4 network to generate an IPv4 let network = "fd52:f6b0:3162::/48".parse()?; let ip = ipgen::ip("App 1", network)?; assert_eq!(ip.to_string(), "fd52:f6b0:3162:46a1:2a4f:89e8:8aed:1327"); Ok(()) } ```