A native Rust library for Mozilla's Public Suffix List

```rust let suffix = psl::suffix(b"www.example.com")?; asserteq!(suffix.asbytes(), b"com"); assert_eq!(suffix.typ(), Some(Type::Icann));

let domain = psl::domain(b"www.example.com")?; asserteq!(domain.asbytes(), b"example.com"); asserteq!(domain.suffix().asbytes(), b"com");

let domain = psl::domain("www.食狮.中国".asbytes())?; asserteq!(domain.asbytes(), "食狮.中国".asbytes()); asserteq!(domain.suffix().asbytes(), "中国".as_bytes());

let domain = psl::domain(b"www.xn--85x722f.xn--55qx5d.cn")?; asserteq!(domain.asbytes(), b"xn--85x722f.xn--55qx5d.cn"); asserteq!(domain.suffix().asbytes(), b"xn--55qx5d.cn");

let domain = psl::domain(b"a.b.example.uk.com")?; asserteq!(domain.asbytes(), b"example.uk.com"); asserteq!(domain.suffix().asbytes(), b"uk.com");

let domain = psl::domain(b"tcp.example.com.")?; asserteq!(domain.asbytes(), b"example.com."); asserteq!(domain.suffix().as_bytes(), b"com."); ```