#name #debugging #display #named #type-name #generic #sensical

no-std named-types

类似于 Display 或 Debug,但用于类型名

2 个版本

0.1.1 2023年7月28日
0.1.0 2023年7月24日

#5 in #type-name

GPL-3.0-only

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