const-addrs 0.2.0

A set of macros for creating networking types from a string literal.
Documentation
# const-addrs

A set of macros for creating networking types from a string literal.

Each of the macros will parse using the `FromStr` implementation for 
the appropriate type. The generated code will use a `const` constructor 
for the type, if one exists.

```rust
use std::net::Ipv4Addr;
use const_addrs::ip4;

let a = ip4!("192.168.1.1");
let b = Ipv4Addr::new(192,168,1,1);
assert_eq!(a, b);
```

And turns invalid strings into compile-time errors:
```
error: invalid IPv4 address syntax
  --> bad.rs:10:18
   |
10 |     let a = ip4!("192.1681.1");
   |                  ^^^^^^^^^^^^
```

There are macros for:

| Type                     | macro      |
| ------------------------ | ---------- |
| `std::net::IpAddr`       | `ip!`      |
| `std::net::Ipv4Addr`     | `ip4!`     |
| `std::net::Ipv6Addr`     | `ip6!`     |
| `std::net::SocketAddr`   | `sock!`    |
| `std::net::SocketAddrV4` | `sock4!`   |
| `std::net::SocketAddrV6` | `sock6!`   |
| `ipnetwork::IpNetwork`   | `net!`     |
| `ipnetwork::Ipv4Network` | `net4!`    |
| `ipnetwork::Ipv6Network` | `net6!`    |
| `macaddr::MacAddr`       | `mac!`     |
| `macaddr::MacAddr6`      | `mac6!`    |
| `macaddr::MacAddr8`      | `mac8!`    |


*Note*: using `ipnetwork::*` types requires you to have the 
[ipnetwork crate](https://crates.io/crates/ipnetwork) in your depdencies. These
types can be enabled with the `ipnet` feature.
default)

*Note*: using `macaddr::*` requires the 
[macaddr crate](https://crates.io/crates/macaddr) in your depdencies. These
types can be enabled with the `mac` feature.

When possible the expanded macro uses `const` constructors, allowing for simple
string representations of network types without the cost of runtime parsing.