Skip to content

Latest commit

 

History

History
71 lines (50 loc) · 2.08 KB

File metadata and controls

71 lines (50 loc) · 2.08 KB

uaddr

test pipeline crates.io docs.rs license

A unified address type that can represent an IPv4 / IPv6 socket address, a UNIX domain socket (UDS) address, or a hostname with a port. Supports no_std.

Usage

Adds uaddr to your Cargo.toml:

[dependencies]
uaddr = "0.4"

Then parses any supported address format:

use std::net::SocketAddr;

use uaddr::UniAddr;

// IPv4 socket address
let addr = "127.0.0.1:8080".parse::<UniAddr>().unwrap();
assert!(matches!(addr, UniAddr::Inet(SocketAddr::V4(_))));

// IPv6 socket address
let addr = "[::1]:8080".parse::<UniAddr>().unwrap();
assert!(matches!(addr, UniAddr::Inet(SocketAddr::V6(_))));

// Hostname with port (resolved lazily)
let addr = "example.com:443".parse::<UniAddr>().unwrap();
assert!(matches!(addr, UniAddr::Host(_)));
assert!(addr.resolved().is_err());

// UNIX domain socket address - pathname address
let addr = "unix:/run/app.sock".parse::<UniAddr>().unwrap();
assert!(matches!(addr, UniAddr::Unix(_)));

// UNIX domain socket address - abstract address
let addr = "unix:@my-service".parse::<UniAddr>().unwrap();
assert!(matches!(addr, UniAddr::Unix(_)));

Please refer to the documentation for more details and examples.

Changelog

CHANGELOG.md.

License

Licensed under either of:

at your option.