Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/pdamianik/named-types-rs

Like Display or Debug but for type names
https://github.com/pdamianik/named-types-rs

Last synced: about 2 months ago
JSON representation

Like Display or Debug but for type names

Awesome Lists containing this project

README

        

# 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](https://crates.io/crates/pretty-type-name),
whereas this crate provides the name `IoError`.

The names for std are given based on the [Duck Test](https://en.wikipedia.org/wiki/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.