Function core::any::type_name_of_val
const: unstable · source · pub fn type_name_of_val<T: ?Sized>(_val: &T) -> &'static str
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