158 个稳定版本

2.1.55 2024年7月24日
2.1.49 2024年6月29日
2.1.29 2024年3月29日
2.1.13 2023年12月15日
0.0.2 2017年1月8日

#66 in 网络编程

Download history 65545/week @ 2024-05-03 74413/week @ 2024-05-10 73185/week @ 2024-05-17 77559/week @ 2024-05-24 89976/week @ 2024-05-31 93295/week @ 2024-06-07 80948/week @ 2024-06-14 83918/week @ 2024-06-21 90873/week @ 2024-06-28 88714/week @ 2024-07-05 95943/week @ 2024-07-12 91883/week @ 2024-07-19 94860/week @ 2024-07-26 87325/week @ 2024-08-02 106026/week @ 2024-08-09 100391/week @ 2024-08-16

407,860 每月下载量
用于 78 个 Crates (11 直接)

MIT/Apache

2.5MB
96K SLoC

PSL

Mozilla 公共后缀列表的本地 Rust 库

CI Publish Latest Version Crates.io downloads Docs Minimum supported Rust version Maintenance License

该库使用 Mozilla 的 公共后缀列表 来可靠地确定域名的后缀。

它将列表编译成原生 Rust 代码以获得最佳速度。此列表编译过程作为单独的步骤由 Publish GitHub Action 完成,因此 crate 仍然可以快速编译。该 Publish 动作会自动每天检查更新,如果上游域后缀有任何更新,则会将更新后的 crate 推送到 crates.io。这使 crate 与官方列表自动同步。

如果您需要一个可以在运行时更新的动态列表,虽然速度稍慢,请使用 publicsuffix crate(该 crate 也提供了可选的在任何情况下查找域名的支持)。

设置

将此 crate 添加到您的 Cargo.toml

[dependencies]
psl = "2"

示例

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

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

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

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

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

let domain = psl::domain(b"_tcp.example.com.")?;
assert_eq!(domain, "example.com.");
assert_eq!(domain.suffix(), "com.");

依赖关系