2 个版本
0.1.1 | 2023年7月28日 |
---|---|
0.1.0 | 2023年7月24日 |
#5 in #type-name
63KB
1.5K SLoC
named-types-rs
类似于 Display 或 Debug,但用于类型名。
这个包提供了一个名为 Named
的特质,它提供了一种以 core::fmt::Display
可访问的方式获取类型的名称。它与 core::any::type_name
类似,不包含路径,但应该为类似 std::io::Error
的东西提供更有意义的名称,它会显示为 Error
,类似于 pretty-type-name,而此包提供名称 IoError
。
std 的名称根据 Duck Test 提供,例如 core::slice::Iter
保持为 Iter
,与类似 core::option::Iter
的内容冲突,因为它们表现像泛型迭代器,而 std::io::Error
并不像泛型错误,而是一种特定的 io 操作错误类型。
此外,提供了一个名为 Named 的派生宏来派生 Named 特质。可以通过给派生类型添加属性 #[named(...)] 来配置此宏。以下选项可以传递给属性
- rename = "..." 用来更改类型名称。
- format = "..." 用来使用自定义格式字符串,该字符串接受所有非忽略的泛型参数。覆盖任何 rename = "..." 参数以格式化类型名称。
- ignore_all 用来忽略所有泛型参数。
- ignore = ... 用来忽略一个泛型参数。
- passthrough = ... 用来使用泛型参数的 Named 实现。优先于其他选项。
要配置多个选项,请重复使用 #[named(...)] 属性。
依赖
~0.4–0.9MB
~21K SLoC