#iri #validation #resolution #relative #allocation #rfc #base

oxiri

Simple and fast implementation of IRI validation and relative IRI resolution

11 releases

0.2.8 Oct 19, 2024
0.2.4 Aug 21, 2024
0.2.3 Mar 23, 2024
0.2.2 Mar 27, 2022
0.1.1 Jul 10, 2020

#231 in Parser implementations

Download history 3107/week @ 2024-08-21 2817/week @ 2024-08-28 2779/week @ 2024-09-04 2024/week @ 2024-09-11 2519/week @ 2024-09-18 1839/week @ 2024-09-25 2462/week @ 2024-10-02 2259/week @ 2024-10-09 3419/week @ 2024-10-16 2867/week @ 2024-10-23 3012/week @ 2024-10-30 2046/week @ 2024-11-06 2195/week @ 2024-11-13 2040/week @ 2024-11-20 2548/week @ 2024-11-27 2722/week @ 2024-12-04

9,714 downloads per month
Used in 136 crates (32 directly)

MIT/Apache

62KB
1.5K SLoC

OxIRI

actions status Latest Version Released API docs

OxIRI is a simple and fast implementation of IRIs based on RFC 3987.

It allows zero stack allocation IRI validation and resolution.

Example:

use oxiri::Iri;

// Parse and validate base IRI
let base_iri = Iri::parse("http://foo.com/bar/baz").unwrap();

// Validate and resolve relative IRI
let iri = base_iri.resolve("bat#foo").unwrap();
assert_eq!("http://foo.com/bar/bat#foo", iri.as_str());

// Extract IRI components
assert_eq!(iri.scheme(), "http");
assert_eq!(iri.authority(), Some("foo.com"));
assert_eq!(iri.path(), "/bar/bat");
assert_eq!(iri.query(), None);
assert_eq!(iri.fragment(), Some("foo"));

If serde is available, Iri and IriRef implement the Serialize and Deserialize traits and encode the IRI as a string.

License

This project is licensed under either of

  • Apache License, Version 2.0, (LICENSE-APACHE or <http://www.apache.org/licenses/LICENSE-2.0>)
  • MIT license (LICENSE-MIT or <http://opensource.org/licenses/MIT>)

at your option.

Contribution

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

Dependencies

~165KB