1 个不稳定版本

0.1.0 2023年2月11日

#2207解析器实现

Download history 17/week @ 2024-03-13 13/week @ 2024-03-20 16/week @ 2024-03-27 16/week @ 2024-04-03 3/week @ 2024-04-10 62/week @ 2024-04-17 43/week @ 2024-04-24 179/week @ 2024-05-01 70/week @ 2024-05-08 236/week @ 2024-05-15 142/week @ 2024-05-22 153/week @ 2024-05-29 183/week @ 2024-06-05 976/week @ 2024-06-12 692/week @ 2024-06-19 25/week @ 2024-06-26

1,936 每月下载量

MIT 许可证

36KB
963

url-lite

nodejs/http-parser 到 Rust 的 URL 解析器移植

功能

  • #[no_std]
  • 无堆分配,返回 &str 结构体
  • 从不崩溃(由 dtolnay/no-panic 测试)

安装

cargo add url_lite

示例

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:[email protected]:8080/some%20path?foo=bar#zzz";
let url = Url::parse(input).expect("Invalid URL");

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

功能

注意事项

尽管这是从 http-parser 端口移植的 URL 解析器,并且通过了所有测试,但它尚未在生产环境中使用。它也不是一个通用的解析器,可能不支持所有 URL,仅返回切片,并且不执行解码。

如果您需要一个健壮的 URL 解析器并且可以接受 std/alloc 依赖,请改用 servo/rust-url

依赖项

~300–760KB
~18K SLoC