10 个版本
0.2.2 | 2020 年 2 月 5 日 |
---|---|
0.2.1 | 2019 年 2 月 12 日 |
0.2.0 | 2019 年 1 月 30 日 |
0.1.6 | 2018 年 10 月 17 日 |
0.1.3 | 2017 年 3 月 15 日 |
#33 in #getting
3,681 每月下载次数
用于 devii
4KB
此crate提供NamedType
特质。`named_type_derive
` crate还提供使用`#[derive(NamedType)]
`自动推导此特质的能力。
示例
您可以为任何结构体或枚举推导NamedType
以获得一些明显的生成名称。对于大多数类型来说,这是此crate的预期用法。
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");
}
由于简短的类型名称可能存在冲突,因此可以通过添加前缀或后缀到生成名称中,以减少歧义。请注意,这仅影响简短的类型名称。
#[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");