如果我在变量 data_type
中存储了某物的数据类型,我该如何创建一个具有此变量中定义的数据类型的新变量?
例如:
struct a {
var: String,
}
struct b {
var: String,
}
let var_type = "a";
let variable: var_type { var: "abc" }; // creates struct var_type
最佳答案
只要您在编译时知道所有类型,就可以根据数据中的某些值将非结构化数据转换为类型化数据。这正是流行的 serde crate 所做的。
在不知道用例的情况下,很难准确地解决这个问题,但下面的代码给出了两个示例,说明如何使用枚举完成类型映射(尽管匹配可用于将任何数据映射到已知的任何类型在编译时)。
enum VarType {
A(String),
B(String),
Unknown(String),
}
fn main() {
let _var1 = VarType::A("abc".to_string());
let _var2 = VarType::B("xyz".to_string());
let data = vec![("a", "abc"), ("b", "xyz")];
for item in data {
let (data_type, value) = item;
match data_type {
"a" => VarType::A(value.to_string()),
"b" => VarType::B(value.to_string()),
_ => VarType::Unknown(value.to_string()),
};
}
}
关于variables - 如何将变量用作不同变量的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58139431/