如何使用serde_json序列化std :: env:vars()?

时间:2019-08-21 15:07:56

标签: rust serde serde-json

如何使用serde_json序列化std :: env :: vars()

以下作品,但我认为可以做得更好:

let mut vars = std::collections::HashMap::new();
for (key, value) in std::env::vars() {
    vars.insert(key, value);
}
json!(vars)

1 个答案:

答案 0 :(得分:1)

可以将返回两个元素的元组的迭代器collect设置为新的HashMapstd::env::vars返回这样的迭代器(称为Vars),因此可以在这里使用:

let vars: HashMap<String, String> = std::env::vars().collect();
json!(vars)

除此之外,如果没有为Serialize直接实现Vars,就无法进一步简化事情。由于Vars是标准库类型,并且Serialize特性来自外部包装箱,因此您不能这样做。