# Function std::any::type_name_of_val

const: unstable · source ·

    pub fn type_name_of_val<T>(_val: &T) -> &'static strwhere
        T: ?Sized,

🔬This is a nightly-only experimental API. (`type_name_of_val` #66359)
Expand description

Returns the name of the type of the pointed-to value as a string slice. This is the same as `type_name::<T>()`, but can be used where the type of a variable is not easily available.

## Note

This is intended for diagnostic use. The exact contents and format of the string are not specified, other than being a best-effort description of the type. For example, `type_name_of_val::<Option<String>>(None)` could return `"Option<String>"` or `"std::option::Option<std::string::String>"`, but not `"foobar"`. In addition, the output may change between versions of the compiler.

This function does not resolve trait objects, meaning that `type_name_of_val(&7u32 as &dyn Debug)` may return `"dyn Debug"`, but not `"u32"`.

The type name should not be considered a unique identifier of a type; multiple types may share the same type name.

The current implementation uses the same infrastructure as compiler diagnostics and debuginfo, but this is not guaranteed.

## Examples

Prints the default integer and float types.

    #![feature(type_name_of_val)]
    use std::any::type_name_of_val;

    let x = 1;
    println!("{}", type_name_of_val(&x));
    let y = 1.0;
    println!("{}", type_name_of_val(&y));

Run