#byte-buffer #zero-copy #buffer #io

ntex-bytes

用于处理字节的类型和特性(bytes crate分支)

28个发布版本

0.1.27 2024年4月8日
0.1.24 2024年2月1日
0.1.21 2023年11月10日
0.1.19 2023年1月23日
0.1.4 2021年6月27日

#592 in 网络编程

Download history 1603/week @ 2024-05-01 1742/week @ 2024-05-08 1349/week @ 2024-05-15 1675/week @ 2024-05-22 1725/week @ 2024-05-29 1841/week @ 2024-06-05 1357/week @ 2024-06-12 1527/week @ 2024-06-19 1399/week @ 2024-06-26 1242/week @ 2024-07-03 1625/week @ 2024-07-10 1412/week @ 2024-07-17 1490/week @ 2024-07-24 1589/week @ 2024-07-31 1538/week @ 2024-08-07 1821/week @ 2024-08-14

6,660次每月下载
用于 57 个crate(17个直接使用)

MIT/Apache

240KB
4.5K SLoC

字节

用于处理字节的实用库。这是bytes crate(https://github.com/tokio-rs/bytes)的分支

Crates.io

文档

用法

要使用ntex-bytes,首先将以下内容添加到您的Cargo.toml

[dependencies]
ntex-bytes = "0.1"

接下来,将以下内容添加到您的crate中

use ntex_bytes::{Bytes, BytesMut, Buf, BufMut};

Serde支持

Serde支持是可选的,默认禁用。要启用,请使用功能serde

[dependencies]
ntex-bytes = { version = "0.1", features = ["serde"] }

许可证


lib.rs:

提供用于处理字节的抽象。

这是bytes crate的分支

ntex-bytes crate提供了一个高效的字节缓冲区结构(Bytes)和用于处理缓冲区实现的特性(BufBufMut)。

字节

Bytes是一个用于存储和操作连续内存切片的高效容器。它主要用于网络代码,但也可能在其他地方有应用。

Bytes值通过允许多个Bytes对象指向相同的底层内存来促进零拷贝网络编程。这通过使用引用计数来跟踪何时内存不再需要并可以释放来管理。

可以从现有的字节数组(例如 &[u8]Vec<u8>)直接创建一个 Bytes 处理句柄,但通常首先使用 BytesMut 并写入数据。例如

use ntex_bytes::{BytesMut, BufMut};

let mut buf = BytesMut::with_capacity(1024);
buf.put(&b"hello world"[..]);
buf.put_u16(1234);

let a = buf.split();
assert_eq!(a, b"hello world\x04\xD2"[..]);

buf.put(&b"goodbye world"[..]);

let b = buf.split();
assert_eq!(b, b"goodbye world"[..]);

assert_eq!(buf.capacity(), 998);

在上面的例子中,仅分配了一个 1024 字节的缓冲区。处理句柄 ab 将共享底层缓冲区,并维护索引以跟踪由句柄表示的缓冲区视图。

有关更多详细信息,请参阅结构体文档

依赖关系

~340–680KB
~14K SLoC