8 个版本
0.3.0 | 2022年5月11日 |
---|---|
0.2.3 | 2022年5月10日 |
0.2.0 | 2019年6月21日 |
0.1.0 | 2019年6月19日 |
#45 in #proc-macro-attributes
67,951 每月下载量
用于 99 个crate(通过 function_name)
6KB
133 行
::function_name
函数属性 #[named]
,在函数体作用域内生成一个 function_name!
宏。
生成的 function_name!()
宏将展开为注解函数的名称,作为一个字符串字面量。
示例
use ::function_name::named;
#[named]
fn my_super_duper_function ()
{
assert_eq!(
function_name!(),
"my_super_duper_function",
);
}
由于生成的 function_name!
展开为一个字符串字面量,它可以与其他宏(如 concat!
)一起使用。
#[macro_use] extern crate function_name;
macro_rules! function_path {() => (concat!(
module_path!(), "::", function_name!()
))}
pub mod foo {
pub mod bar {
#[named]
pub fn baz ()
{
assert_eq!(
function_path!(),
[
env!("CARGO_PKG_NAME"),
"foo", "bar",
"baz",
].join("::"),
);
}
}
}