Skip to content

hanyu-dev/uaddr

Repository files navigation

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.

About

No description, website, or topics provided.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors