21 个稳定版本 (3 个主要版本)
3.0.0 | 2024年7月11日 |
---|---|
2.3.0 | 2024年3月21日 |
2.2.1 | 2024年1月23日 |
2.1.1 | 2023年11月25日 |
0.1.0 | 2023年5月10日 |
在 解析器实现 中排名 141
每月下载量 161
1MB
15K SLoC
Rust 的 WHATWG URL 解析器
快速遵循 WHATWG URL 规范 的 URL 解析器,适用于 Rust。经过良好测试,并且自 Node 18 以来被 Node.js 广泛使用。
Ada 库通过了规范中涵盖的完整测试范围,支持多种平台(例如,Windows、Linux、macOS)。它完全支持相关的 Unicode 技术标准。
用法
有关用法示例,请参阅 此处。您可以使用 cargo run --example simple
在本地运行它。请随意调整以进一步探索此软件包。
功能
std: 需要 std
的功能。此功能默认启用,如果要启用 no-std
,则设置 no-default-features
为 true
。
serde: 允许 Url
与 serde
一起使用。此功能默认禁用。启用此功能且没有 std
的情况下将仅提供 Serialize
。启用此功能并带有 std
将同时提供 Serialize
和 Deserialize
。
libcpp: 使用 libc++
构建代码 ada-url
。此功能默认禁用。如果没有安装 libc++
就启用此功能将导致编译错误。
性能
Ada 速度很快。以下基准测试显示与 url
相比,URL 解析速度提高了 3.34 倍
parse/ada_url time: [2.0790 µs 2.0812 µs 2.0835 µs]
thrpt: [369.84 MiB/s 370.25 MiB/s 370.65 MiB/s]
parse/url time: [6.9266 µs 6.9677 µs 7.0199 µs]
thrpt: [109.77 MiB/s 110.59 MiB/s 111.25 MiB/s]
实现特性
Url
实现以下特性。
特性 | 描述 |
---|---|
显示 |
提供 to_string ,并允许在 format! 宏(例如 println! )中使用值。 |
调试 |
允许在格式宏中输出调试信息,使用 {:?} 语法 |
PartialEq , Eq |
允许比较,例如 url1 == url2 ,url1.eq(url2) |
PartialOrd , Ord |
允许排序 url1 < url2 ,按字母顺序进行。这还允许 Url 作为 BTreeMap 的键使用 |
哈希 |
使得 Url 可以根据字符串表示进行哈希。这对于将 Url 作为 HashMap 的键使用非常重要 |
FromStr |
允许与 str 's parse 方法 一起使用 |
TryFrom<String> , TryFrom<&str> |
为 String 和 &str 提供了 try_into 方法 |
Borrow<str> , Borrow<[u8]> |
在一些 crate 中使用,以便 Url 可以作为键使用。 |
Deref<目标类型=str> |
允许 &Url 解引用为 &str 。还提供了一些字符串方法 |
AsRef<[u8]> ,AsRef<str> |
用于执行廉价的引用到引用的转换。 |
Send |
用于声明类型可以在线程边界之间传输。 |
Sync |
用于声明类型是线程安全的。 |
开发
justfile
justfile
包含可以由 just 执行的命令(称为“配方”)以方便使用。
运行所有 lints 和测试
just all
跳过功能
just all --skip=libcpp,serde
许可证
此代码可在 Apache License 2.0 以及 MIT 许可证下使用。
我们的测试包括第三方代码和数据。基准测试代码包括第三方代码:仅提供研究目的,不是库的一部分。
依赖关系
~0.3–1.3MB
~27K SLoC