4个版本

0.2.2 2020年8月5日
0.2.1 2019年9月24日
0.2.0 2019年9月23日
0.1.1 2019年4月20日
0.1.0 2018年8月2日

#16 in #buffering

Download history 34/week @ 2024-03-12 25/week @ 2024-03-19 10/week @ 2024-03-26 53/week @ 2024-04-02 31/week @ 2024-04-09 20/week @ 2024-04-16 31/week @ 2024-04-23 13/week @ 2024-04-30 19/week @ 2024-05-07 17/week @ 2024-05-14 22/week @ 2024-05-21 47/week @ 2024-05-28 56/week @ 2024-06-04 61/week @ 2024-06-11 49/week @ 2024-06-18 51/week @ 2024-06-25

226 每月下载量
2 个crate中使用 (通过 buffering)

BSD-3-Clause

11KB
216 代码行

结构

该crate为buffering crate提供过程宏NoCopy。由于buffering具有功能标记,因此只能使用此宏,因此没有理由在其他crate中使用。

限制

目前,此功能仅在以下条件满足的数据类型中起作用

  • 它是一个具有命名字段的struct
  • 字段类型是栈分配的

提供的方法

.NoCopy应用于每个struct时,将生成一个用于缓冲操作的联合类型。遍历方式如下

  • 联合类型可以初始化为结构体的联合字段,或者使用MyUnionType::new_buffer()方法并提供一个切片
  • 联合类型还提供.get_field_name().set_field_name()方法,这些方法针对结构体字段生成
  • 获取器和设置器将尊重由属性 #[nocopy_macro(endian = "big")]#[nocopy_macro(endian = "little")] 指定的端序,这些端序是在原始结构体中提供的

已识别的属性

可以通过向结构体添加属性来指定整数类型是否应解释为大端值或小端值,形式为 #[nocopy_macro(endian = "big")]#[nocopy_macro(endian = "little")]。如果没有指定任何一个,则默认假设整数使用本地端序。另一个可用的属性是 #[nocopy_macro(name = "MyUnionNameHere")],用于覆盖自动生成联合体的默认名称。

依赖项

~1.5MB
~34K SLoC