[][src]Crate addr

Robust domain name parsing using the Public Suffix List

This library allows you to easily and accurately parse any given domain name.

Examples

extern crate addr;

use addr::{DomainName, DnsName, Email};

// You can find out the root domain
// or extension of any given domain name
let domain: DomainName = "www.example.com".parse()?;
assert_eq!(domain.root(), "example.com.");
assert_eq!(domain.root().suffix(), "com.");

let domain: DomainName = "www.食狮.中国".parse()?;
assert_eq!(domain.root(), "食狮.中国.");
assert_eq!(domain.root().suffix(), "中国.");

let domain: DomainName = "www.xn--85x722f.xn--55qx5d.cn".parse()?;
assert_eq!(domain.root(), "公司.cn.");
assert_eq!(domain.root().suffix(), "cn.");

let domain: DomainName = "a.b.example.uk.com".parse()?;
assert_eq!(domain.root(), "example.uk.com.");
assert_eq!(domain.root().suffix(), "uk.com.");

let name: DnsName = "_tcp.example.com.".parse()?;
assert_eq!(name.root(), "example.com.");
assert_eq!(name.root().suffix(), "com.");

let email: Email = "чебурашка@ящик-с-апельсинами.рф".parse()?;
assert_eq!(email.user(), "чебурашка");
assert_eq!(email.host(), "ящик-с-апельсинами.рф.");

// In any case if the domain's suffix is in the list
// then this is definately a registrable domain name
assert!(domain.root().suffix().is_known());

Re-exports

pub use errors::Result;
pub use errors::Error;

Modules

errors

Errors returned by this library

Structs

DnsName

Holds information about a particular DNS name

DomainName
Email

Enums

Host

Holds information about a particular host