1个不稳定版本
0.1.0 | 2023年8月25日 |
---|
#1989 在 数据结构
21KB
414 行
BytesQuilt
BytesQuilt是一个Rust库,它提供了一种高效灵活的方式来处理二进制数据缓冲区。它允许您以任意顺序写入字节,并高效地重新组装整个二进制缓冲区而无需复制任何数据。
特性
-
高效字节管理:BytesQuilt内部使用Bytes包来处理底层缓冲区,确保高效内存管理和最佳性能。
-
部分写入跟踪:BytesQuilt允许您跟踪缓冲区哪些部分已被写入。这提供了对缓冲区写入进度的可见性。
-
未读部分查询:BytesQuilt允许您查询尚未接收的缓冲区部分。这种能力允许进行针对性的数据检索,有助于实现高效的数据处理工作流程。
-
快速插入与二分搜索:BytesQuilt支持使用二分搜索快速将数据插入到缓冲区的任何部分,以高效定位正确的区域。
-
无缝组装:BytesQuilt保持细致的账目信息,使得无需复制即可重新组装整个二进制缓冲区。这种方法最小化了内存开销并保持了性能。
入门指南
要在您的Rust项目中使用BytesQuilt,只需将以下行添加到您的Cargo.toml
文件中
[dependencies]
bytes-quilt = "<version>"
请确保将<version>
替换为您想要使用的适当版本,并遵循语义版本控制指南。
用法
以下是一个简单的示例,演示了如何使用BytesQuilt
(注意,一些展示的API可能是预期的,可能尚未实现)
use bytesquilt::BytesQuilt;
fn main() {
// Create a new BytesQuilt instance
let mut quilt = BytesQuilt::new();
// Write bytes to the quilt
quilt.put_u8_at(32, 0x04);
quilt.put_bytes_at(0, 0x01, 2);
quilt.put_at(16, &[0x02, 0x03]);
quilt.put_u32(40, 0x05);
// Reassemble the buffer
let buffer = quilt.into_inner();
// Use the buffer as needed
println!("Buffer: {:?}", buffer);
// Buffer: [0x01, 0x01, 0x02, 0x03, 0x04, 0x05]
}
有关更多详细信息和高阶用法示例,请参阅文档。
贡献
欢迎为BytesQuilt做出贡献!如果您遇到任何问题,有建议,或希望贡献新功能或改进,请提交问题或提交拉取请求。
提交拉取请求时,请遵循贡献指南。
许可
© Zefira Shannon | 2022-2023
本文件遵循Apache License 2.0版本(《许可协议》);除非遵守许可协议,否则不得使用此文件。您可以在以下网址获取许可协议的副本:https://apache.ac.cn/licenses/LICENSE2.0。
除非适用法律要求或书面同意,否则在许可协议下分发的软件按“现状”基础分发,不提供任何形式的保证或条件,无论是明示的还是默示的。有关许可协议下许可和限制的具体语言,请参阅许可协议。
依赖项
~0.5–1MB
~21K SLoC