13个版本 (8个破坏性更新)
0.9.0 | 2023年3月18日 |
---|---|
0.8.0 | 2022年7月21日 |
0.7.1 | 2021年8月21日 |
0.6.1 | 2021年3月2日 |
0.4.2 | 2019年3月17日 |
#924 in 编码
每月572次下载
在catnip中使用
24KB
357 代码行
Byte Struct
以打包或位字段布局将结构体打包和解包为原始字节。
示例
use byte_struct::*;
bitfields!(
#[derive(PartialEq, Debug)]
GIFColorTableInfo: u8 {
global_color_table_flag: 1,
color_resolution: 3,
sort_flag: 1,
global_color_table_size: 3,
}
);
#[derive(ByteStruct, PartialEq, Debug)]
#[byte_struct_le]
struct GIFLogicalScreenDescriptor {
width: u16,
height: u16,
color_table_info: GIFColorTableInfo,
background_color_index: u8,
pixel_aspect_ratio: u8,
}
fn example() {
assert_eq!(GIFLogicalScreenDescriptor::BYTE_LEN, 7);
let raw_descriptor = [0x03, 0x00, 0x05, 0x00, 0xF7, 0x00, 0x00];
let descriptor = GIFLogicalScreenDescriptor::read_bytes(&raw_descriptor[..]);
assert_eq!(descriptor, GIFLogicalScreenDescriptor{
width: 3,
height: 5,
color_table_info: GIFColorTableInfo {
global_color_table_flag: 1,
color_resolution: 3,
sort_flag: 1,
global_color_table_size: 7,
},
background_color_index: 0,
pixel_aspect_ratio: 0,
});
let mut raw_another = [0; GIFLogicalScreenDescriptor::BYTE_LEN];
descriptor.write_bytes(&mut raw_another[..]);
assert_eq!(raw_descriptor, raw_another);
}
许可证
许可协议为以下之一:
- Apache License, Version 2.0, (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
您可选择。
依赖关系
~295–750KB
~18K SLoC