如何使用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)
答案 0 :(得分:1)
可以将返回两个元素的元组的迭代器collect
设置为新的HashMap
。 std::env::vars
返回这样的迭代器(称为Vars
),因此可以在这里使用:
let vars: HashMap<String, String> = std::env::vars().collect();
json!(vars)
除此之外,如果没有为Serialize
直接实现Vars
,就无法进一步简化事情。由于Vars
是标准库类型,并且Serialize
特性来自外部包装箱,因此您不能这样做。