【问题标题】:How to print out a variable with all its (nested) type information?如何打印出包含所有(嵌套)类型信息的变量?
【发布时间】:2014-05-28 14:10:39
【问题描述】:

鉴于 Rust 的当前状态及其生态系统(IDE 支持、文档等),我发现探索该语言非常困难,因为我现在从来没有在不查看源代码的情况下如何获得一个类型的良好概述。

我想知道是否有一个 print 命令 - 给定任何变量作为输入 - 打印出一个很好的类型表示及其所有嵌套属性(如果有的话)。

这样的事情存在吗?

【问题讨论】:

  • 你是什么意思 - 探索语言?为什么需要在运行时使用类型来“探索”它?大多数数据结构都是抽象的,你不应该知道它们的内部结构。当您需要了解它提供的一些结构和操作时,您通常会在documentation 中查找。

标签: types rust


【解决方案1】:

只有在结构中使用的所有类型都具有#[derive(Debug)] 时,您才能获得输出。

例如

#[derive(Debug)]
struct X {
    a: Nested,
    b: i32,
}

#[derive(Debug)]
struct Nested {
    c: u32,
    d: DeeplyNested,
}

#[derive(Debug)]
struct DeeplyNested {
    e: &'static str,
}

fn main() {
    let x = X {
        a: Nested {
            c: 8,
            d: DeeplyNested { e: "fun" },
        },
        b: -3,
    };
    println!("{:#?}", x);
}

【讨论】:

  • 啊,明白了。关于如何探索这门语言,您还有其他提示吗?赛车手?这似乎只适用于 Rust 本身,而不适用于外部库,例如 rust-httpright?
  • 您可以使用debug!("{}", exp) 来查看它的执行情况。除非调试模式打开(并且调试模式在测试中关闭),否则它不会运行。除此之外,只需查看 rustservo 代码库作为示例。见doc.rust-lang.org/rust.html#logging-systemdoc.rust-lang.org/guide-testing.html
猜你喜欢
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
  • 2015-09-08
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
相关资源
最近更新 更多