9 个版本

0.1.9 2021 年 6 月 8 日
0.1.8 2021 年 5 月 27 日
0.1.5 2021 年 4 月 29 日
0.1.4 2020 年 11 月 2 日
0.1.0 2020 年 7 月 28 日

#5 in #iri

Download history 33/week @ 2024-03-11 36/week @ 2024-03-18 54/week @ 2024-03-25 87/week @ 2024-04-01 26/week @ 2024-04-08 38/week @ 2024-04-15 39/week @ 2024-04-22 30/week @ 2024-04-29 31/week @ 2024-05-06 53/week @ 2024-05-13 45/week @ 2024-05-20 53/week @ 2024-05-27 33/week @ 2024-06-03 33/week @ 2024-06-10 34/week @ 2024-06-17 43/week @ 2024-06-24

148 个月下载量
用于 15 个包 (11 直接)

MIT 许可协议

140KB
2K SLoC

Rust 2K SLoC // 0.2% comments Pest 261 SLoC // 0.4% comments

RDFtk: IRI

iri此包提供了 IRIURI 规范的实现。

crates.io docs.rs

与RDFtk项目的其余部分一样,这个crate的目标是实用性而非优化,因此它可能需要执行比必要的更多克隆,并且解析速度可能比预期的要慢。大部分情况下,客户端应使用IRIRef类型,这是一个Arc引用,因此可以在不克隆整个IRI值的情况下重用。

示例

最常见的用法是从字符串中解析IRI值。

use rdftk_iri::IRI;
use std::convert::from_str;

let result = IRI::from_str(
    "https://[email protected]:123/forum/questions/?tag=networking&order=newest#top",
);

builder模块允许以更程序化的方式构建IRI

use rdftk_iri::{IRI, Scheme};
use rdftk_iri::builder::IriBuilder;

let mut builder = IriBuilder::default();
let result: IriResult<IRI> = builder
    .scheme(&Scheme::https())
    .user_name("john.doe")
    .host("www.example.com")?
    .port(123.into())
    .path_str("/forum/questions/")?
    .query_str("tag=networking&order=newest")?
    .fragment_str("top")?
    .try_into();

注意Scheme::https()的使用,SchemePort类型都包括用于构建已知值的关联函数。

特性

以下特性包含在这个crate中。

  • builder [默认] -- 包含builder模块,它反过来包含IriBuilder类型。
  • genid [默认] -- 包含一个构造函数来创建"genid"已知IRI值。
  • path_iri [默认] -- 为IRI提供TryFrom<&PathBuf>TryFrom<PathBuf>的实现。
  • uuid_iri [默认] -- 为IRI提供TryFrom<&Uuid>TryFrom<Uuid>的实现。

变更

版本 0.1.9

  • 添加了启用genid创建的功能。
  • 使IRI成为PartialOrd + Ord,现在可以排序。
  • 添加了PercentEncoding trait以对百分编码组件进行编码。

版本 0.1.8

  • 对解析器进行了微调以修复一些优先级规则。
  • 一些文档修复。

版本 0.1.7

  • 在Path和IRI类型中添加了对已知IRI的支持。

版本 0.1.6

  • 在lib.rs中应用了很多警告。
  • 应用了更多的Clippy建议。

版本 0.1.5

  • 应用了所有的Clippy建议。

版本 0.1.4

  • 进行了大量的测试和本地覆盖率报告。
  • 修复了在UserInfo::to_string中分隔符缺失的bug。
  • 修复了IpvFuture::from_str的解析bug。
  • IriBuilder添加了hostpath_rootpath方法。
  • 更改了with_new_querywith_new_fragmentIRI上的实现,不再接收Option
  • Scheme添加了blob已知值。

版本 0.1.3

  • 主要是测试。
    1. 将所有只使用公共API的测试移出主代码。
    2. 添加了一组用于收集整个IRI示例的文件。
    3. Scheme添加了proptest,将为更多添加。
  • 修复了 IRI::is_absolute 中的错误,现在会忽略权限并考虑片段。
  • 添加了 IRI::is_relative_reference

版本 0.1.2

  • 主要是文档补充。
  • 尽可能添加测试案例。
  • 添加了合适的辅助函数和API快捷方式。
  • 添加了 path_iriuuid_iri 功能。

版本 0.1.1

  • 添加了 IRIRef 类型。

版本 0.1.0

  • 首次发布。

待办事项

  1. 完成 IRI 规范化
  2. 完成 IRI 解析器
  3. 完成 IRI 相对化

RDF

依赖项

约 4.5–7MB
约 128K SLoC