我想遍历结构的字段并为每次迭代访问其各自的值:
#[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/