2 releases
0.1.1 | Jul 28, 2023 |
---|---|
0.1.0 | Jul 24, 2023 |
63KB
1.5K
SLoC
named-types-rs
Like Display or Debug but for type names.
This crate provides Named
, a trait that provides a core::fmt::Display
able way to get a types Name.
It is similar to core::any::type_name
without paths, but should provide a more sensical name for
something like std::io::Error
, which would show up as Error
with something like pretty-type-name,
whereas this crate provides the name IoError
.
The names for std are given based on the Duck Test, e.g.
core::slice::Iter
stays Iter
conflicting with something like core::option::Iter
because they behave
like generic iterators, whereas std::io::Error
does not behave like a generic Error but rather is a
specific Error type for io operations.
Additionally a Named derive macro is provided for deriving the Named trait. This macro can be configured by attributing a derived type with #[named(...)]. The following options can be passed to the attribute:
- rename = "..." to change the types name.
- format = "..." to use a custom format string that accepts all non-ignored generic parameters. Overrides any rename = "..." parameters to format the types name.
- ignore_all to ignore all generic parameters.
- ignore = ... to ignore a generic parameter.
- passthrough = ... to use the Named implementation of a generic parameter. Takes priority over other options.
To configure multiple options repeat the #[named(...)] attribute.
Dependencies
~0.4–0.9MB
~20K SLoC