宏定义中的标识符插值

时间:2018-09-16 04:03:58

标签: rust

说我想编写一个带有标识符的宏,并定义一个以ident作为其名称一部分的函数:

macro_rules! defun {
    ( $name:ident ) => {
        fn fun_$name() { // This doesn't work, need to find a way
                         // to convert "foo" into "fun_foo"
            // ...
        }
    }
}

defun!(foo);

这可能吗?

P.S。我的实际用例更像是

macro_rules! tests {
    ( $( $name:ident ),* $(,)* ) => {
        $(
            #[test]
            fn test_case_$name() {
                // ...
            }
        )*
    }
}

tests!{
    fixture1,
    fixture2,
}

进行一系列集成测试。

0 个答案:

没有答案