在Rust宏中操作路径?

时间:2016-09-02 03:46:25

标签: macros rust

我想编写一个可以拆分路径来操纵其组件的宏。例如:

macro_rules! example {
    ($path:path) => {
        vec![
            stringify!(get_path_init!($path)),
            stringify!(get_path_last!($path)),
        ]
    };
}

fn main() {
    let path_parts = example!(std::vec::Vec);
    assert_eq!(path_parts, vec!["std::vec", "Vec"]);
}

在标准库或任何相当流行的板条箱中是否存在这样的情况,是否可以使用宏实现?或者它需要编译器插件吗?

1 个答案:

答案 0 :(得分:5)

这需要一个编译器插件;这不能用macro_rules!完成,也不能用语言或标准库的任何部分,以及做的任何板条箱(不是我知道的)需要夜间编译器无论如何