#multipart #zero-allocation #streaming #http #async #reader-writer

multipart-rs

一个简单、零分配、流式、异步的 Rust 多部分读取器和写入器

12 个版本

0.1.11 2024 年 7 月 25 日
0.1.10 2024 年 7 月 25 日
0.1.8 2024 年 3 月 6 日

1593网页编程

Download history 23/week @ 2024-07-01 358/week @ 2024-07-22 43/week @ 2024-07-29 484/week @ 2024-08-05

每月 885 次下载

MIT 许可证

20KB
400

Multipart-RS

一个简单、零分配、流式、异步的 Rust 多部分读取器和写入器

读取多部分

let headermap = vec![(
    "Content-Type".to_string(),
    "multipart/form-data; boundary=--974767299852498929531610575".to_string(),
)];
// Lines must end with CRLF
let data = b"--974767299852498929531610575\r
Content-Disposition: form-data; name=\"afile\"; filename=\"a.txt\"\r
\r
Content of a.txt.\r
--974767299852498929531610575\r
Content-Disposition: form-data; name=\"bfile\"; filename=\"b.txt\"\r
Content-Type: text/plain\r
\r
Content of b.txt.\r
--974767299852498929531610575--\r\n";

let reader = MultipartReader::from_data_with_headers(data, &headermap);

loop {
    match reader.next().await {
        Some(Ok(item)) => println!(item),
        Some(Err(e)) => panic!("Error: {:?}", e),
        None => break,
    }
}

依赖关系

~1–1.4MB
~25K SLoC