10 releases
0.2.2 | Feb 5, 2020 |
---|---|
0.2.1 | Feb 12, 2019 |
0.2.0 | Jan 30, 2019 |
0.1.6 | Oct 17, 2018 |
0.1.3 | Mar 15, 2017 |
#35 in #getting
3,244 downloads per month
Used in devii
4KB
This crate provides the NamedType
trait. The named_type_derive
crate
also provides the ability to automatically derive this trait using
#[derive(NamedType)]
.
Examples
You can derive NamedType
for any struct or enum to get some obvious
generated names. This is the expected usage of this crate for most types.
use named_type_derive::*;
use named_type::NamedType;
#[derive(NamedType)]
struct MyStruct {}
#[derive(NamedType)]
enum MyEnum {}
fn main() {
assert_eq!(MyStruct::type_name(), concat!(module_path!(), "::MyStruct"));
assert_eq!(MyStruct::short_type_name(), "MyStruct");
assert_eq!(MyEnum::type_name(), concat!(module_path!(), "::MyEnum"));
assert_eq!(MyEnum::short_type_name(), "MyEnum");
}
Since it's possible that short type names conflict, there is the option to add a prefix or suffix to a generated name to reduce ambiguity. Note that this only affects the short type name.
#[derive(NamedType)]
#[named_type(short_suffix = "_suffix")]
struct Suffixed {}
#[derive(NamedType)]
#[named_type(short_prefix = "Pre")]
enum Prefixed {}
assert_eq!(Suffixed::type_name(), concat!(module_path!(), "::Suffixed"));
assert_eq!(Suffixed::short_type_name(), "Suffixed_suffix");
assert_eq!(Prefixed::type_name(), concat!(module_path!(), "::Prefixed"));
assert_eq!(Prefixed::short_type_name(), "PrePrefixed");