我有以下几点:
let mut my_number = 32.90;
如何打印my_number
的类型
使用type
和type_of
不起作用。有没有其他方法可以打印号码的类型?
发布于 2015-03-20 22:16:31
有一个不稳定的函数std::intrinsics::type_name
可以让你得到一个类型的名称,尽管你必须使用Rust的夜间构建(这在稳定的Rust中不太可能工作)。() }); } fn main() { print_type_of(&32.90); // prints "f64" print_type_of(&vec![1, 2, 4]); // prints "std::vec::Vec" print_type_of(&"foo"); // prints "&str" }&version=nightly&backtrace=2&run=1">Here’s an example:
#![feature(core_intrinsics)]
fn print_type_of<T>(_: &T) {
println!("{}", unsafe { std::intrinsics::type_name::<T>() });
}
fn main() {
print_type_of(&32.90); // prints "f64"
print_type_of(&vec![1, 2, 4]); // prints "std::vec::Vec<i32>"
print_type_of(&"foo"); // prints "&str"
}
发布于 2015-10-29 12:44:19
** UPDATE **最近没有经过验证可以正常工作。
我根据vbo的回答做了一个小板条箱。它为您提供了一个宏来返回或打印该类型。
将以下内容放入您的Cargo.toml文件中:
[dependencies]
t_bang = "0.1.2"
然后你可以像这样使用它:
#[macro_use] extern crate t_bang;
use t_bang::*;
fn main() {
let x = 5;
let x_type = t!(x);
println!("{:?}", x_type); // prints out: "i32"
pt!(x); // prints out: "i32"
pt!(5); // prints out: "i32"
}
发布于 2015-09-25 03:58:38
您还可以使用在println!("{:?}", var)
中使用变量的简单方法。如果没有为该类型实现Debug
,则可以在编译器的错误消息中看到该类型:
mod some {
pub struct SomeType;
}
fn main() {
let unknown_var = some::SomeType;
println!("{:?}", unknown_var);
}
(playpen)
它很脏,但很管用。
https://stackoverflow.com/questions/21747136
复制相似问题