26 unstable releases (6 breaking)

Uses new Rust 2021

0.7.0 Sep 14, 2022
0.6.0 Jul 14, 2022
0.5.6 Jun 19, 2022
0.5.0 Feb 19, 2022
0.1.1 May 5, 2018

#117 in Rust patterns

Download history 5630/week @ 2022-08-17 5197/week @ 2022-08-24 5733/week @ 2022-08-31 6215/week @ 2022-09-07 6076/week @ 2022-09-14 5519/week @ 2022-09-21 4687/week @ 2022-09-28 4732/week @ 2022-10-05 5758/week @ 2022-10-12 6558/week @ 2022-10-19 5522/week @ 2022-10-26 7266/week @ 2022-11-02 7119/week @ 2022-11-09 7236/week @ 2022-11-16 6732/week @ 2022-11-23 10260/week @ 2022-11-30

32,870 downloads per month
Used in 22 crates (11 directly)

MIT/Apache

520KB
8K SLoC

iri-string

Latest version Documentation Minimum rustc version: 1.60

String types for IRIs (Internationalized Resource Identifiers) and URIs (Uniform Resource Identifiers).

See the documentation for details.

Features

  • no_std support.
  • String types (both owned and borrowed) for RFC 3986 URIs and RFC 3987 IRIs.
    • Native slice types, so highly operable with Cow, ToOwned, etc.
    • URIs/IRIs validation.
    • Conversions between URIs and IRIs.
    • Decomposition into components.
  • IRI reference resolution algorithm.
  • IRI normalization algorithm.
  • Masking password part of an IRI (optional and not automatic).
  • Percent encoding of user-provided strings.
  • IRI builder.
  • RFC 6570 URI Template.

Feature flags

Direct

  • alloc (enabled by default)
    • Enables types and functions which require memory allocation.
    • Requires std or alloc crate available.
  • std (enabled by default)
    • Enables all std features (such as memory allocations and std::error::Error trait).
    • Requires std crate available.
    • This automatically enables alloc feature.

memchr

  • memchr
    • Enable optimization for internal parsers, using memchr crate.

serde

  • serde
    • Implements Serialize and Deserialize traits for string types.

CI

CI must pass on develop and master branches. No automated online CI is set up (since they consumes credit too fast), so run cargo make manual-ci-all locally before committing to these branches. On other branches, tests and some lints (such as dead_code) are allowed to fail, but all commits must be successfully compilable and must be formatted.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies