小编Jer*_*mas的帖子

Rust:如何允许和检测 Macro_rules 中的可选标点符号?

我已经使用 Rust 一段时间了,并决定是时候从宏开始了。我想创建一个宏,允许对无符号整数变量的特定位进行按位与运算。这是我目前正在运行的内容:

macro_rules! AND {
    ($($val:ident.$bit:literal), *) => {
        {
            let mut val_out = 0x01;
            
            $(
                val_out &= ($val >> $bit);
            )*
            
            val_out & 0x01
        }
    };
}

fn main() {
    let x = 0x01;
    let y = 0x02;
    let z = 0x10;
    
    println!("{}", AND!(x.0, y.1, z.4)); // Prints 1
    println!("{}", AND!(x.0, y.1, z.0)); // Prints 0
}
Run Code Online (Sandbox Code Playgroud)

我想做的也是允许否定运算符。这就是我编译的内容,但我不知道如何确定感叹号是否匹配。

macro_rules! AND {
    ($($(!)?$val:ident.$bit:literal), *) => {
        {
            let mut val_out = 0x01;
            
            $(
                val_out &= ($val >> $bit);
            )* …
Run Code Online (Sandbox Code Playgroud)

macros rust

6
推荐指数
1
解决办法
687
查看次数

标签 统计

macros ×1

rust ×1