rust - 通过变量访问结构字段

标签 rust

我想遍历结构的字段并为每次迭代访问其各自的值:

#[derive(Default, Debug)]
struct A {
    foo: String,
    bar: String,
    baz: String
}


fn main() {
    let fields = vec!["foo", "bar", "baz"];
    let a: A = Default::default();

    for field in fields {
        let value = a[field] // this doesn't work
    }
}

如何通过变量访问字段?

更新

我宁愿使用HashMap代替:
fn main() {
    let mut B = HashMap::new();
    B.insert("foo", 1);
    B.insert("bar", 2);
    B.insert("baz", 3);

    let fields = vec!["foo", "bar", "baz"];

    for &field in &fields {
        let value = B.get(field);
    }
}

最佳答案

Rust没有任何直接在其字段上进行迭代的方法。如果您的数据在语义上表示某种类型的集合,则应改为使用诸如Vec,array或 std::collections 中的集合之一的集合类型。

如果您仍然需要遍历各个领域,那么也许您需要重新考虑您的任务方法,看看是否没有更惯用的/正确的方法来完成此任务

关于rust - 通过变量访问结构字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59600739/

相关文章:

types - 为什么这个闭包参数需要显式类型?

rust - 如何获得与Rust HashMap的最大值关联的 key ?

rust - 如何为使用生命周期实现的特征传递函数?

linux - Rust `std::time::Instant` "panicked at ' 提供的瞬间晚于 self “

rust - 如何使用向量在结构上导出克隆和复制?

rust - 如何用u64::max_value()填充Vec

rust - 美元语法在 Rust 格式字符串中意味着什么?

stream - 如何将 futures::Stream 写入磁盘而不先将其完全存储在内存中?

xml - 无法使用 serde-xml-rs 解析带有可选元素的 XML

rust - 在 Rust 中为特定类型实现结构体的函数