首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Rust中打印变量的类型?

如何在Rust中打印变量的类型?
EN

Stack Overflow用户
提问于 2014-02-13 14:49:09
回答 6查看 117.8K关注 0票数 333

我有以下几点:

代码语言:javascript
复制
let mut my_number = 32.90;

如何打印my_number的类型

使用typetype_of不起作用。有没有其他方法可以打印号码的类型?

EN

回答 6

Stack Overflow用户

发布于 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:

代码语言:javascript
复制
#![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"
}
票数 126
EN

Stack Overflow用户

发布于 2015-10-29 12:44:19

** UPDATE **最近没有经过验证可以正常工作。

我根据vbo的回答做了一个小板条箱。它为您提供了一个宏来返回或打印该类型。

将以下内容放入您的Cargo.toml文件中:

代码语言:javascript
复制
[dependencies]
t_bang = "0.1.2"

然后你可以像这样使用它:

代码语言:javascript
复制
#[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"
}
票数 16
EN

Stack Overflow用户

发布于 2015-09-25 03:58:38

您还可以使用在println!("{:?}", var)中使用变量的简单方法。如果没有为该类型实现Debug,则可以在编译器的错误消息中看到该类型:

代码语言:javascript
复制
mod some {
    pub struct SomeType;
}

fn main() {
    let unknown_var = some::SomeType;
    println!("{:?}", unknown_var);
}

(playpen)

它很脏,但很管用。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21747136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档