相关疑难解决方法(0)

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

我有以下内容:

let mut my_number = 32.90;
Run Code Online (Sandbox Code Playgroud)

我该如何打印my_number

使用typetype_of没有奏效.还有其他方法可以打印数字的类型吗?

types rust

204
推荐指数
11
解决办法
6万
查看次数

Rust如何实现反射?

Rust具有这种Any特性,但它也有"不支付你不使用的"政策.Rust如何实现反射?

我的猜测是Rust使用了懒惰标记.每个类型最初都是未分配的,但是稍后如果将类型的实例传递给期望Any特征的函数,则为该类型分配一个TypeId.

或者Rust TypeId可能会在其实例可能传递给该函数的每种类型上放置一个?我想前者会很贵.

reflection rust

46
推荐指数
1
解决办法
9926
查看次数

如何反省Rust中所有可用的方法和成员?

有没有办法在Rust中打印出类型或实例的可用成员的完整列表?

如果问这个问题是Python,那么答案就是print(dir(object)).
如果问题是C,那么Clang有一个Python API可以解析C代码并对其进行内省.

不熟悉Rust工具,我很想知道是否有某种方法可以在运行时或编译时,使用编译器功能(例如宏)或使用外部工具来执行类似的操作.


请注意,这个问题是故意的,因为使用的确切方法不一定非常重要.给定一个变量,是否有办法找到它的所有方法和功能并不是一个不寻常的目标,但不能很好地了解这个领域,我不是将问题局限于特定方法.

introspection rust

13
推荐指数
3
解决办法
2212
查看次数

如何在数组中存储类型?

我想创建一个包含结构类型(非实例)的数组,所有结构类型都实现相同的特征。我尝试这样做:

trait TraitA {
    fn new(number: i16) -> Self;
    fn get_name() -> &'static str;
}

struct StructA {
    bar: u8
}
struct StructB {
    foo: i16
}

impl TraitA for StructA {
    fn new(number: i16) -> Self {
        StructA { bar: number as u8 }
    }
    fn get_name() -> &'static str
    { "StructA" }
}
impl TraitA for StructB {
    fn new(number: i16) -> Self {
        StructB { foo: number }
    }
    fn get_name() -> &'static str
    { "StructB" } …
Run Code Online (Sandbox Code Playgroud)

rust

3
推荐指数
1
解决办法
974
查看次数

何时在Rust中发生类型绑定?

据我所知:在C语言中,变量的"类型"在编译期间被绑定,并且该变量的值在运行时被绑定.

例如,在编译期间int a = 10;,类型int绑定到变量,并且在运行时a将实际值10绑定(或分配)给它.

但在Rust,我们有let a = 2;.这里,什么时候类型(比如i32Rust中的任何整数类型)被绑定a

我正在构建一个前端Rust编译器,目前正在编写解析器阶段.此时,我应该为这些变量分配什么类型?

computer-science programming-languages rust

1
推荐指数
1
解决办法
146
查看次数