Crate yuri

Source
Expand description

§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“:

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

§RFCs

RFCStatusDescription
rfc3986must2005 / Uniform Resource Identifier (URI): Generic Syntax
rfc6570maybe2012 / URI Template / variable expansion
rfc8820?2020 / URI Design and Ownership
rfc8615?2019 / Well-Known Uniform Resource Identifiers (HTTP)

Modules§

Structs§

Enums§

Type Aliases§

  • Whether the Scheme indicates explicit TLS