3 unstable releases

0.2.0 May 9, 2021
0.1.2 Jan 15, 2018
0.1.1 Jan 15, 2018
0.1.0 Oct 18, 2017

#475 in Procedural macros

Download history 55/week @ 2023-12-18 105/week @ 2023-12-25 284/week @ 2024-01-01 360/week @ 2024-01-08 224/week @ 2024-01-15 49/week @ 2024-01-22 55/week @ 2024-01-29 12/week @ 2024-02-05 18/week @ 2024-02-12 44/week @ 2024-02-19 56/week @ 2024-02-26 81/week @ 2024-03-04 66/week @ 2024-03-11 35/week @ 2024-03-18 37/week @ 2024-03-25 132/week @ 2024-04-01

281 downloads per month
Used in 7 crates (6 directly)

LGPL-2.0

8KB
163 lines

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 and is compatible with stable rust. Inspired by the maplit crate.

Example:

#[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()
    );
}

Dependencies

~1.5MB
~34K SLoC