#proc-macro #bit #macro #bitmask #bits #bit-manipulation #integer

bit_seq

用于创建位序列的进程宏

5个版本

0.2.1 2023年6月12日
0.2.0 2023年6月5日
0.1.2 2023年6月3日
0.1.1 2023年6月3日
0.1.0 2023年6月3日

#1875 in 编码

Download history

每月 70 次下载

MIT 协议

21KB
189

bit_seq

GitHub Workflow Status Crates.io docs.rs

bit_seq 是一个方便的Rust包,它提供了一个用于创建位序列的进程宏。这个包简化了位序列的生成,提高了可读性并减少了潜在的错误。位序列可以直接指定,也可以通过十六进制值,或者通过标识符或具有特定长度的整数来指定。它在系统编程以及常见位操作的底层硬件或协议接口中特别有用。

功能

  • 使用简单语法生成位序列
  • 直接指定或通过十六进制值指定位序列
  • 使用标识符或整数定义具有特定长度的位序列
  • 在长度表达式中内插外部变量
  • 编译为常见的位操作,因此使用此包不会增加运行时开销

用法

首先,在您的项目命令行中添加以下内容

cargo add bit_seq

然后,在您的Rust文件中导入该包

use bit_seq::bseq;

以下是一些使用 bseq 宏的示例

// Direct raw bit sequence
let t = bseq!(0110 01 0 1);
assert_eq!(t, 0b0110_01_0_1);

// Using hex values
let t = bseq!(01 0x1f);
assert_eq!(t, 0b01_0001_1111);

// Using value length expression
let t = bseq!(3:1 0 0xf:2);
assert_eq!(t, 0b1_0_11);

// Using variable length expression
let var = 0xf;
let t = bseq!(10 var:2);
assert_eq!(t, 0b10_11);

// Using mixed variable types
let var_64: u64 = 0xf;
let var_16: u16 = 0xf;
let t = bseq_8!(var_16:4 var_64:4);
assert_eq!(t, 0xff);

// Using unary operators 
assert_eq!(bseq!(!0:6), 0b111111);

文档

您可以在此处查看完整的API文档。

贡献

欢迎为bit_seq做出贡献!请提交一个拉取请求或在此GitHub页面上创建一个问题。

许可证

本项目采用MIT许可证。

依赖项

~280–730KB
~17K SLoC