#parser #iana #uri #namespaces #resources

无需 std urn

一个用于处理 URN (唯一资源名称) 的 crate

15 个不稳定版本 (6 个破坏性更新)

0.7.0 2023 年 4 月 8 日
0.5.1 2023 年 1 月 7 日
0.5.0 2022 年 9 月 29 日
0.4.0 2021 年 11 月 4 日

#618解析器实现

Download history 3765/week @ 2024-03-13 2684/week @ 2024-03-20 1531/week @ 2024-03-27 2666/week @ 2024-04-03 2623/week @ 2024-04-10 1962/week @ 2024-04-17 1754/week @ 2024-04-24 1284/week @ 2024-05-01 1560/week @ 2024-05-08 1531/week @ 2024-05-15 2073/week @ 2024-05-22 1373/week @ 2024-05-29 856/week @ 2024-06-05 1236/week @ 2024-06-12 691/week @ 2024-06-19 363/week @ 2024-06-26

每月下载量 3,598
用于 17 个 crate (3 个直接使用)

0BSD OR MIT OR Apache-2.0

60KB
1K SLoC

crates.io docs.rs

URN

一个用于处理 URN 的 Rust crate。解析和比较按照规范执行(这意味着只有 URN 的一部分用于相等性检查)。某些 RFC 定义了每个命名空间的词法等效规则,这里不考虑这些规则。

RFC2141 在某些情况下比 RFC8141 更宽松(反之亦然),已采取措施能够解析任一规范。在百分编码 URN 组件时,生成的 URN 将始终对 RFC2141 和 RFC8141 解析器都有效。但是,某些命名空间的百分编码/解码规则可能不同。

在功能标志之后提供 Serde 支持。如果禁用默认的 "std" 功能,则提供 no_std 支持。 alloc 也是可选的。 UrnSlice 是借用 URN, Urn 是所有者 URN。有关文档,请参阅 docs.rs

URN 有许多令人惊讶的细节,以至于我不确定其他 URN 解析器是否可信!诚然,它们非常少,因为几乎没有人真正需要 URN...

变更日志

  • 0.1.0 - 初始版本
  • 0.1.1 - 添加 FromStr 实现
  • 0.2.0 - 为了使用 FromStr,删除了 Urn::parse 函数,并改进了文档
  • 0.2.1 - 删除 0.1 版本留下的文件
  • 0.3.0 - 主要实现变更,删除了 Namespace(感谢 u/chris-morgan 的帮助)
  • 0.3.1 - 修复空 NSS 的 panic 并在 r-组件中添加 "?=" 终止符("?" 和 "=" 都可以是 r-组件的一部分,但它们一起终止它)
  • 0.3.2 - 为 Urn 添加 Clone 实现
  • 0.3.3 - 更精确的构建器错误;通过减少内存占用最多 15 字节(但在 16 位平台上增加 5 字节)
  • 0.3.4 - 由 @callym 提供 Serde 支持
  • 0.4.0 - 将 UrnBuilder::namespace -> UrnBuilder::nid
  • 0.5.0 - 改变构建器 API 以接受可选组件的选项,稍作清理,修复了一些潜在的轻微错误
  • 0.5.1 - 修复了字符串中4字节处没有有效UTF-8字符边界时的panic问题
  • 0.6.0 - 添加了 alloc 功能,添加了 UrnSlice 类型,添加了 percent 模块,未实现 Deref<Target = str>。这个crate即将接近1.0版本。
  • 0.7.0 - 添加了对非 'static UrnSlice 的反序列化支持,始终编码有效的RFC2141 URNs,在 percent::encode_* 中检查空字符串。

许可证

TL;DR(长话短说)做你想做的。

根据您的选择,许可协议为BSD Zero Clause License(https://opensource.org/licenses/0BSD)、Apache 2.0 License(http://www.apache.org/licenses/LICENSE-2.0)或MIT License(http://opensource.org/licenses/MIT),详情请参阅BSD Zero Clause LicenseApache 2.0 LicenseMIT License

依赖项

~170KB