#[function_name]Function attribute 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.
```rust use ::functionname::functionname;
fn mysuperduperfunction () { asserteq!( functionname!(), "mysuperduperfunction", ); } ```
Since the generated function_name! expands to a string literal,
it can be used with other macros such as concat!:
```rust
macrorules! functionpath {() => (concat!( modulepath!(), "::", functionname!() ))}
pub mod foo { pub mod bar { #[functionname] pub fn baz () { asserteq!( functionpath!(), [ env!("CARGOPKG_NAME"), "foo", "bar", "baz", ].join("::"), ); } } } ```