6个版本 (3个稳定版本)
1.2.0 | 2020年5月13日 |
---|---|
1.1.0 | 2019年12月4日 |
1.0.0 | 2019年11月15日 |
0.2.0 | 2019年11月8日 |
0.1.1 | 2019年11月7日 |
#23 in #head
22KB
488 代码行
Elaine
此crate提供了一个轻量级且可能不完整的http头部解析器实现,用于async-std读取器。
目标与内容
此crate旨在为async readers
提供一个专注于简单性和安全性的HTTP头部解析器;虽然性能也很重要,但安全性和简单性更为重要。
关于安全性
此crate提供的API将永远不会直接包含unsafe
代码,包括可能会提高库性能的代码。此外,主要导出项- recognize
- 提供了保证,它将永远不会从读取器中读取过多的字节,这可能会损失性能。
关于简单性
此crate在其依赖项中不包括http
crate;尽管它维护良好且非常有用,但它引入了一个超集的功能,这些功能对于此实现不是必需的。这一决定绝不是要阻止其他开发者使用该库。
示例
use std::boxed::Box;
use std::error::Error;
use elaine::{recognize, RequestMethod};
use async_std::task::block_on;
fn main() -> Result<(), Box<dyn Error>> {
block_on(async {
let mut req: &[u8] = b"GET /elaine HTTP/1.1\r\nContent-Length: 3\r\n\r\nhey";
let result = recognize(&mut req).await.unwrap();
assert_eq!(result.method(), Some(RequestMethod::GET));
assert_eq!(result.len(), Some(3));
assert_eq!(std::str::from_utf8(req), Ok("hey"));
});
Ok(())
}
elaine |
---|
贡献
请参阅CONTRIBUTING。
依赖项
~4–14MB
~169K SLoC