Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 按变量访问结构字段_Rust - Fatal编程技术网

Rust 按变量访问结构字段

Rust 按变量访问结构字段,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 va

我希望迭代结构的字段,并在每次迭代中访问其各自的值:

#[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
、数组或中的某个集合


如果您仍然觉得需要遍历这些字段,那么您可能需要重新考虑您的任务方法,看看是否有更惯用/正确的方法来完成它

这似乎是一个好方法。或者使用一些集合结构,或者更好,也许您可以解释为什么需要这样做this@sshashank124你的回答很有帮助。如果你发布了一个答案,你会得到一张赞成票