#net #literals #ip #ipv4 #ipv6 #addr #addrv4

net-literals-impl

net-literals库的内部实现

2个版本

使用旧版Rust 2015

0.1.2 2018年1月15日
0.1.0 2017年10月18日

#14 in #addr

Download history 18/week @ 2024-02-19 25/week @ 2024-02-26 3/week @ 2024-03-04 15/week @ 2024-03-11

61 每月下载量

GPL-3.0 许可证

6KB
102 代码行,不包括注释

net-literals:用于编写IP/套接字地址字面量的Rust宏。

该库允许您以字符串形式编写IP和套接字地址,这些字符串在编译时进行解析(并检查其有效性)。受maplit库的启发。

示例

use net_literals::{ip, ipv4, ipv6, addr, addrv4, addrv6};
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()
    );
}

依赖关系

~5KB