9 releases
0.3.0 | May 11, 2022 |
---|---|
0.2.3 | May 10, 2022 |
0.2.0 | Jun 21, 2019 |
0.1.1 | Jun 19, 2019 |
#64 in Procedural macros
68,868 downloads per month
Used in 112 crates
(64 directly)
6KB
::function_name
Function attribute #[named]
that generates a function_name!
macro
in the scope of the function's body.
The generated function_name!()
is a macro that expands to
the name of the annotated function, as a string literal.
Examples
use ::function_name::named;
#[named]
fn my_super_duper_function ()
{
assert_eq!(
function_name!(),
"my_super_duper_function",
);
}
Since the generated function_name!
expands to a string literal,
it can be used with other macros such as 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("::"),
);
}
}
}