Crate typedef [] [src]

TypeDef is used to identify and compare types, as well as print their names.

If you do not need readable type name, you should use TypeId. This wrapper re-implements TypeId.

Since Rust 1.0, this library can only work on nightly Rust. To activate the nice names instead of gobbledygook, include this library with features = ["nightly"] configuration parameter. On stable rust, it falls back to gobbledygook (type identifier) instead of a nice name.

To get a name of a type:

Be careful when using this code, it's not being tested!
use typedef::{ TypeDef };

assert_eq!(TypeDef::name_of::<i64>(), "i64");

Type can also serve as type identifier and name container:

Be careful when using this code, it's not being tested!
use typedef::{ TypeDef };

let typedef = TypeDef::of::<i64>();

assert!(typedef.is::<i64>());
assert_eq!(typedef.get_str(), "i64");

More common usage would be in a generic method:

Be careful when using this code, it's not being tested!
use std::any::Any;
use std::fmt;
use typedef::TypeDef;

fn foo<T: Any + fmt::Debug>(value: T) -> String {
    format!(
        "the value of {} type is {:?}",
        TypeDef::of::<T>(),
        value
    )
}

fn main() {
    assert_eq!(foo(15), "the value of i32 type is 15");
}

Structs

TypeDef