url-lite

Port of the URL parser from nodejs/http-parser to Rust

Features

Installation

sh cargo add url_lite

Example

```rust use url_lite::{Url, ParseError};

// Note that ParseError doesn't implement the Error trait unless the unstable // feature is enabled assert!(Url::parse("not-an-url") == Err(ParseError::Invalid))

let input = "https://usr:pass@example.com:8080/some%20path?foo=bar#zzz"; let url = Url::parse(input).expect("Invalid URL");

asserteq!(url.schema, Some("https")); asserteq!(url.host, Some("example.com")); asserteq!(url.port, Some("8080")); asserteq!(url.path, Some("/some%20path")); asserteq!(url.query, Some("foo=bar")); asserteq!(url.fragment, Some("zzz")); assert_eq!(url.userinfo, Some("usr:pass")); ```

Features

Caveats

Although this is a port of the URL parser from http-parser and it passes all the tests, it has not been used in production. It is also not a generic parser, may not support all URLs, only returns slices, and performs no decoding.

If you need a robust URL parser and are okay with std/alloc dependency, use servo/rust-url instead.