yuri

Crates.ioyuri
lib.rsyuri
version0.1.0
sourcesrc
created_at2024-10-13 11:20:37.186447
updated_at2024-11-02 00:03:38.73592
descriptionno_std alloc-free URI Parser
homepagehttps://github.com/yaws-rs/ytypes
repositoryhttps://github.com/yaws-rs/ytypes
max_upload_size
id1407281
size1,371
(publish-rs)

documentation

README

yuri

meme why uri when you can have yuri

no_std, alloc-free permissive URI Parser & Builder

let s = "https://foo:secret@foobar.test:666/?q=a&m=s#fragemnt";
let uri = yuri::Uri::new(s).expect("Failed to parse URI");

Motivation

Optimise on size and being permissive and flexible minimally parsing in no_std & alloc-free environments.

Various RFCs / standards & intepretations complicate the picture,

e.g. punycode and this is left to the downstream consumer currently to validate.

We may in the future support opt-in further validation (e.g. IDNA), which the downstream consumer must consider.

Benchmark

In MacBook M1 13":

Scenario Criterion
yuri::Uri New full HTTPs URL [65.657 ns 65.751 ns 65.846 ns]

RFCs

RFC Status Description
rfc3986 must 2005 / Uniform Resource Identifier (URI): Generic Syntax
rfc6570 maybe 2012 / URI Template / variable expansion
rfc8820 ? 2020 / URI Design and Ownership
rfc8615 ? 2019 / Well-Known Uniform Resource Identifiers (HTTP)
Commit count: 20

cargo fmt