nameof

Build Status MIT License

The name_of!() macro defined in this crate takes a binding, type, or function as an argument and returns its unqualified string representation. If the identifier does not exist in the current context, the macro will cause a compilation error. This macro is mainly intended for debugging purposes and to improve the refactoring experience compared to stringify!().

Examples

The name_of!() macro is used as follows: ```rust

[macro_use]

extern crate nameof;

fn main() { // Bindings let text = "Hello, World!"; println!("Variable {} holds {}.", name_of!(text), text);

// Functions
fn greet() { }
println!("Function is called `{}`.", name_of!(greet));

// Types & Fields
struct TestStruct { test_field: i32 }
println!("Struct is called `{}`.", name_of!(type TestStruct));
println!("Standard Types: `{}`.", name_of!(type i32));
println!("Field is called `{}`.", name_of!(test_field for TestStruct));

} ```

Alternatively, name_of_type!(T) can be used instead of name_of!(type T). ```rust

[macro_use]

extern crate nameof;

fn main() { struct TestStruct { testfield: i32 } println!("Struct is called {}.", nameoftype!(TestStruct)); println!("Struct is called {}.", nameof_type!(i32)); } ```

License

See LICENSE.txt.