yuri 0.1.0

no_std alloc-free URI Parser
Documentation
use yuri::Uri;
use yuri::{Fragment, Query, Scheme};

fn main() {
    let s = "https://foo:secret@foobar.test:666/?q=a&m=s#fragemnt";

    let uri = Uri::new(s).expect("Failed to parse URI");

    assert_eq!(uri.scheme, Scheme::Http(true));

    if let Some(ref authority) = uri.authority {
        assert_eq!(authority.raw_host, "foobar.test");
        assert_eq!(authority.port, Some(666));

        if let Some(userinfo) = &(authority).userinfo {
            assert_eq!(userinfo.raw_user, "foo");
            assert_eq!(userinfo.raw_authorization(), Some("secret"));
        }
    }

    assert_eq!(
        uri.query,
        Some(Query {
            raw_query: "q=a&m=s"
        })
    );
    assert_eq!(
        uri.fragment,
        Some(Fragment {
            raw_fragment: "fragemnt"
        })
    );

    println!("{} -> {:?}", s, uri);
}