2 个版本
0.1.1 | 2022 年 9 月 13 日 |
---|---|
0.1.0 | 2022 年 9 月 13 日 |
#5 in #framed
27KB
330 行
一个用于帧异步 IO 的 crate。
这个 crate 允许以帧的方式执行 IO 操作,这意味着您可以通过发送和接收字节数组而不是字节数据流来发送和接收字节数组。
帧的读取是以取消安全的方式实现的,这意味着您可以在 tokio::select!
的一分支中使用它。
实现也针对高性能和低开销进行了优化。
目标
- 提供取消安全
- 高性能
- 低开销
示例
有关使用此 crate 的示例,请参阅 examples
目录。
lib.rs
:
一个用于帧异步 IO 的 crate。
这个 crate 允许以帧的方式执行 IO 操作,这意味着您可以通过发送和接收字节数组而不是字节数据流来发送和接收字节数组。
帧的读取是以取消安全的方式实现的,这意味着您可以在 tokio::select!
的一分支中使用它。
实现也针对高性能和低开销进行了优化。
目标
- 提供取消安全
- 高性能
- 低开销
用法
要从实现 AsyncRead
的某些类型以帧的方式读取,您可以将其包装在 FramedReader
中并调用 FramedReader::read_frame
。
要将某些类型写入实现 AsyncWrite
的类型以帧的方式,您可以将其包装在 FramedWriter
中并调用 FramedWriter::write_frame
或 FramedWriter::write_frame_cancel_safe
以取消安全的方式写入帧。
类型化帧
如果您希望发送类型化帧(即包含序列化对象的帧),则需要启用 typed
功能标志。
您可以使用FramedReader::read_frame_typed
和FramedWriter::write_frame_typed
函数来读取和写入类型化帧。
依赖项
约2.4–4MB
约70K SLoC