9次发布
0.3.0 | 2022年5月11日 |
---|---|
0.2.3 | 2022年5月10日 |
0.2.0 | 2019年6月21日 |
0.1.1 | 2019年6月19日 |
#61 in 过程宏
68,175 每月下载量
用于 98 个crate (61 直接)
6KB
::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("::"),
);
}
}
}