提问人:mikedew 提问时间:11/18/2023 更新时间:11/18/2023 访问量:27
为什么 struct_iterable 库不给出结构field_value?
why the struct_iterable library does not give the field_value of a struct?
问:
我正在尝试在 crate.io 中使用struct_iterable库
这是我的程序:
#[derive(Iterable)]
#[derive(Debug)]
struct Database {
name: String,
street: String,
zip: String,
}
let database = Database {
name: "John".to_string(),
street: "x avenue".to_string(),
zip: "68901".to_string(),
};
for (field_name, field_value) in database.iter() {
println!("field_name is {} ", field_name);
println!("field_value is {:?} ", field_value);
}
the result are :
field_name is name
field_value is Any { .. }
field_name is street
field_value is Any { .. }
field_name is zip
field_value is Any { .. }
我期望读取结构数据库中加载的数据。
我错过了什么吗?
答:
1赞
Jmb
11/18/2023
#1
该值可以具有任何类型,并且每个字段的类型不一定相同,但必须具有单个类型,因此其类型为 。在您的例子中,由于您知道这些值都是 s,因此您可以使用以下downcast_ref
获取正确类型的值:field_value
&dyn Any
String
for (field_name, field_value) in database.iter() {
println!("field_name is {} ", field_name);
println!("field_value is {:?} ", field_value.downcast_ref::<String>().unwrap());
}
评论
0赞
mikedew
11/18/2023
非常感谢,它正在工作
评论
Any
Debug
Debug
Any
String