相关疑难解决方法(0)

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

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

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

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


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

introspection rust

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

如何在Rust中获取struct字段名?

对于Rust的结构,是否有一些等效的JS的Object.keys()

我需要从结构字段名称生成CSV标题(我使用rust-csv).

struct Export {
    first_name: String,
    last_name: String,
    gender: String,
    date_of_birth: String,
    address: String
}

//... some code

let mut wrtr = Writer::from_file("/home/me/export.csv").unwrap().delimiter(b'\t');

wrtr.encode(/* WHAT TO WRITE HERE TO GET STRUCT NAMES as tuple of strings or somethings */).is_ok()
Run Code Online (Sandbox Code Playgroud)

reflection introspection rust

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

有没有办法检查结构体是否有字段并检查其类型?

我正在尝试编写一个测试来确定是否struct A有一个属性a及其类型是i32.

pub struct A {
    a: i32,
}

#[test]
pub fn test_A() {
    assert!(A.hasattr("a"));
    assert_is_type!(A.a, i32);
}
Run Code Online (Sandbox Code Playgroud)

rust

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

rust - 如何使用派生宏解析结构的元信息?

我正在使用结构体来构建数据库的模式,所以我需要结构体的元信息。

\n

假设我的架构结构定义如下:

\n
#[derive(ParseStruct)]\npub struct User {\n\n  #[field_attr( unique = true, default = "", index=["@hash", "@count"] )]\n  pub name: String,\n\n  #[field_attr( unique = true, default = "" )]\n  pub username: String,\n\n  pub description: Option<String>,\n  pub age: u32\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我想解析为以下结构:

\n
pub struct Schema<T>{\n  name: String,         // the struct name\n  origin: T,            // the struct to be parse, like the User struct above.\n  fields: Vec<Field>,   // the struct\'s fields\n}\n\npub struct Field {\n    field_name: String,\n    field_type: String,\n    field_attrs: FieldAttribute\n}\n\npub struct FieldAttribute …
Run Code Online (Sandbox Code Playgroud)

macros struct rust

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

标签 统计

rust ×4

introspection ×2

macros ×1

reflection ×1

struct ×1