Skip to main content

structured_public_domains/
lib.rs

1//! # structured-public-domains
2//!
3//! Compact Public Suffix List (PSL) for Rust.
4//!
5//! - **~35KB** embedded data (JSON trie compressed with zstd)
6//! - **O(depth)** trie walk lookup (typically 2-3 steps)
7//! - Wildcard (`*.jp`) and exception (`!metro.tokyo.jp`) rules
8//! - Includes ICANN and private domains from the Public Suffix List
9//! - Auto-updated monthly from [publicsuffix.org](https://publicsuffix.org/)
10//!
11//! # Example
12//!
13//! ```
14//! use structured_public_domains::lookup;
15//!
16//! let info = lookup("www.example.co.uk").unwrap();
17//! assert_eq!(info.suffix(), "co.uk");
18//! assert_eq!(info.registrable_domain(), Some("example.co.uk"));
19//! assert!(info.is_known());
20//! ```
21
22#![deny(clippy::unwrap_used, clippy::expect_used, clippy::panic)]
23
24mod trie;
25
26pub use trie::{DomainInfo, is_known_suffix, lookup, registrable_domain};