#write #coap #transfer #writable #io-write #traits #cursor

无std windowed-infinity

表示一个无限顺序可写u8向量的数据结构,其中一个小视图的写入被保留。这主要适用于实现CoAP分块传输,也方便在受限设备上进行日志记录。

5个版本

0.1.4 2023年2月1日
0.1.3 2023年1月25日
0.1.2 2023年1月3日
0.1.1 2020年10月22日
0.1.0 2019年1月22日

#5#writable

Download history 364/week @ 2024-03-13 1018/week @ 2024-03-20 98/week @ 2024-03-27 249/week @ 2024-04-03 425/week @ 2024-04-10 358/week @ 2024-04-17 378/week @ 2024-04-24 438/week @ 2024-05-01 508/week @ 2024-05-08 531/week @ 2024-05-15 480/week @ 2024-05-22 1034/week @ 2024-05-29 275/week @ 2024-06-05 192/week @ 2024-06-12 707/week @ 2024-06-19 358/week @ 2024-06-26

1,598 每月下载量
6 个crate中使用了(通过 coap-handler-implementati…

MIT/Apache

25KB
401

此crate提供了[WindowedInfinity]结构体及其写入的各种特质的实现。

其主要目的是封装一个小缓冲区,以便写入时将游标推进到更大的虚拟缓冲区,仅保留小缓冲区的写入。缓冲区处理完毕后,可以设置一个新的WindowedInfinity并重复写入过程。当写入计算成本较高时,这很浪费,但当操作很少超过缓冲区时,这很方便。

WindowedInfinity的一个典型的实际应用示例是实现根据RFC7959的CoAP分块传输;一个更简单的示例在demo.rs示例中。

功能

[WindowedInfinity]实现的特质的集合取决于配置的cargo功能

  • 使用std功能,它实现了std::io::Write
  • 使用with_serde_cbor功能,它使用serde_cbor的解密特性来实现其Write特性。
  • 类似地,还有ciborium和minicbor的功能。minicbor版本有一点特殊,它同时提供了with_minicbor / with_minicbor_0_19功能。
  • with_minicbor_0_19开始,功能携带版本号。这允许不同版本的minicbor在同一个crate中同时存在,并且更重要的是,确保了在Cargo.toml文件中描述的依赖关系精确。
  • 使用with_embedded_io_0_4功能,实现了嵌入式io的Write特性。

crate大小

与“做一件事,做对一件事”的原计划相比,这个crate有所扩展,因为它包含了几种序列化程序的特性和将自有写入器与其他程序(来自加密摘要或CRC)结合的额外机制。这两者都是临时的——一旦嵌入式-io的1.0版本发布,Tee将被拆分成一个专门的crate(只保留兼容性重导出和构造函数/析构函数),一旦序列化程序开始使用稳定的嵌入式-io,就不再需要添加更多的写入器实现。

依赖关系

~395–750KB
~17K SLoC