Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

34 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

nameof

Crate Version Build Status MIT License

The name_of!() macro defined in this crate takes a binding, type, const, 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!().

Usage

Add nameof as a dependency to your project's Cargo.toml file:

[dependencies]
nameof = "1.3.0"

To use the macro(s), import the crate with the required annotation:

use nameof::name_of;
fn main() {
 let text = "Hello, World!";
 println!("Binding `{}` holds `{}`.", name_of!(text), text);
}

Examples

The name_of!() macro is used as follows:

use nameof::name_of;
struct TestStruct {
 test_field: i32,
}
impl TestStruct {
 const TEST_CONST: i32 = 1;
}
struct GenericStruct<T> {
 test_field_t: T,
}
fn greet() -> &'static str {
 "Hi, World"
}
fn main() {
 let text = "Hello, World!";
 println!("Binding `{}` holds `{}`.", name_of!(text), text);
 println!("Function `{}` says `{}`.", name_of!(greet), greet());
 println!(
 "Struct `{}` has a field `{}`.",
 name_of!(type TestStruct),
 name_of!(test_field in TestStruct)
 );
 println!(
 "Generic Struct `{}` has a field `{}`.",
 name_of!(type GenericStruct<String>),
 name_of!(test_field_t in GenericStruct<String>)
 );
 println!(
 "Struct `{}` has an associated constant `{}`.",
 name_of!(type TestStruct),
 name_of!(const TEST_CONST in TestStruct)
 );
 println!(
 "Standard types such as `{}` and `{}` also work.",
 name_of!(type i32),
 name_of!(type f64)
 );
}

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

use nameof::name_of_type;
struct TestStruct {
 test_field: i32,
}
fn main() {
 println!("Struct is called `{}`.", name_of_type!(TestStruct));
 println!("Type is called `{}`.", name_of_type!(i32));
}

License

See LICENSE.txt.

About

Provides a Rust macro to determine the string name of a binding, type, or function.

Resources

Stars

42 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /