14 个版本
0.3.7 | 2024 年 3 月 4 日 |
---|---|
0.3.5 | 2023 年 11 月 1 日 |
0.3.4 | 2023 年 2 月 26 日 |
0.3.3 | 2022 年 10 月 3 日 |
0.2.0 | 2022 年 7 月 8 日 |
#299 在 Rust 模式
每月 33 次下载
44KB
1.5K SLoC
Radiation
无线电接收器吸收电磁辐射并将其转换为某些信号。无线电发射器将信号转换为电磁辐射并发射它。
此crate将原始字节称为辐射。它允许“吸收”辐射并将其转换为 Rust 类型,反之亦然,“发射”将 Rust 类型作为辐射。
特质 Absorb
解析字节并返回类型化值。它可能失败并返回错误。
特质 Emit
将类型化值转换为原始字节。
派生
属性 tag
在枚举中。指定标签的类型,它可以是实现 Absorb
和 Display
的任何类型(用于错误处理)。默认为 u16
。
在变体中。指定变体的标签值。如果标签的类型实现 Default
和 Add
数值(例如,执行 tag + 1
有意义)。则可以省略该属性。默认为 0,1,2,...
属性 custom_absorb
和 custom_emit
在字段中。允许指定吸收和发射字段的自定义函数。如果字段具有外部类型(例如 SocketAddr
),则很有用。
属性 as_str
在字段中。实现将吸收和发射字符串,并使用 FromStr
和 Display
在字段上进行转换。
示例
#[derive(Debug, PartialEq, Eq, Absorb, Emit)]
#[tag(u8)]
enum SomeEnum {
#[tag(1)]
A {
one: u8,
two: u8,
// specify a function to parse the field with
#[custom_absorb(absorb)]
#[custom_emit(emit)]
three: u16,
},
// use `FromStr` implementation to parse the value from `str`
B(#[as_str] u16),
C(u32),
}
有关更多信息和方法,请参阅 tests.rs
。
限制
属性 limit
在解析字段时覆盖 L
参数。此属性提供实现 Limit
特质的类型。
该特质提供字节的上下限。它还携带有关下一个字段或内部结构将应用哪种限制的信息。
有关更多信息和方法,请参阅 tests.rs
。
依赖关系
~0.9–7MB
~149K SLoC