Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

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)