## net-literals: Rust macros for writing IP/socket address literals. This crate allows you to write IP and socket addresses as strings which are parsed (and checked for validity) at compile time. It makes use of the [proc-macro hack](https://github.com/dtolnay/proc-macro-hack) and is compatible with stable rust. Inspired by the [maplit](https://github.com/bluss/maplit) crate. ### Example: ```rust #[macro_use] extern crate net_literals; use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6}; use std::str::FromStr; fn main() { assert_eq!( ip!("1.2.3.4"), IpAddr::from_str("1.2.3.4").unwrap() ); assert_eq!( ipv4!("1.2.3.4"), Ipv4Addr::from_str("1.2.3.4").unwrap() ); assert_eq!( ipv6!("0011:2233:4455:6677:8899:aabb:ccdd:eeff"), Ipv6Addr::from_str("0011:2233:4455:6677:8899:aabb:ccdd:eeff").unwrap() ); assert_eq!( addr!("2.3.4.5:666"), SocketAddr::from_str("2.3.4.5:666").unwrap() ); assert_eq!( addrv4!("2.3.4.5:666"), SocketAddrV4::from_str("2.3.4.5:666").unwrap() ); assert_eq!( addrv6!("[::2345]:666"), SocketAddrV6::from_str("[::2345]:666").unwrap() ); } ```