1 个不稳定版本
使用旧的Rust 2015
0.5.0 | 2017年1月30日 |
---|
#12 in #chunked
被 uhttp_json_api 使用
15KB
224 代码行,不包括注释
uhttp_chunked_bytes -- HTTP分块体字节的迭代器
这个crate提供了一个零分配迭代器,用于HTTP 分块编码体中的有效载荷字节。它包装了一个给定的原始HTTP体字节的迭代器,解码分块传输协议,并产生每个块的数据字节。结果可以输入到基于字节的解析器中,例如 serde_json::from_iter。
这个实现支持目标平台上可以存储的块长度,直到 usize
。丢弃块扩展参数,并且不处理尾部标题,尽管在分块有效载荷迭代结束时可以从包装的源迭代器中检索它们。
示例
use uhttp_chunked_bytes::ChunkedBytes;
// Create a sample json body `{"key": 42}`, split over two chunks.
let body = b"4\r\n{\"ke\r\n7\r\ny\": 42}\r\n0\r\n\r\n";
let mut stream = body.iter().map(|&b| Ok(b));
let mut bytes = ChunkedBytes::new(&mut stream);
assert_eq!(bytes.next().unwrap().unwrap(), b'{');
assert_eq!(bytes.next().unwrap().unwrap(), b'"');
assert_eq!(bytes.next().unwrap().unwrap(), b'k');
assert_eq!(bytes.next().unwrap().unwrap(), b'e');
assert_eq!(bytes.next().unwrap().unwrap(), b'y');
assert_eq!(bytes.next().unwrap().unwrap(), b'"');
assert_eq!(bytes.next().unwrap().unwrap(), b':');
assert_eq!(bytes.next().unwrap().unwrap(), b' ');
assert_eq!(bytes.next().unwrap().unwrap(), b'4');
assert_eq!(bytes.next().unwrap().unwrap(), b'2');
assert_eq!(bytes.next().unwrap().unwrap(), b'}');
assert!(bytes.next().is_none());
使用方法
此 crate 可以通过cargo通过在 Cargo.toml
中添加它作为依赖项来使用
[dependencies]
uhttp_chunked_bytes = "0.5.0"
并在crate根目录中导入它
extern crate uhttp_chunked_bytes;