variables - 如何将变量用作不同变量的数据类型?

标签 variables rust

如果我在变量 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/

相关文章:

java温度转换程序不工作

c# - 在 C# 中初始化变量时出现错误

string - 连接整数变量最惯用的方法是什么?

http - 使用 std 在 Rust 中发出 HTTP 请求

random - 在偏向中间的范围内生成随机无符号整数

c - 在 AT 命令字符串中使用变量值?

css - 根据选择器在 Sass 中设置一个变量

iterator - 如何从 &mut 迭代器中提取值?

rust - 轮询时延迟 future 返回错误(关闭)

c++ - C 中的左值必需错误