【问题标题】:How to serialize std::env:vars() with serde_json?如何使用 serde_json 序列化 std::env:vars()?
【发布时间】:2019-08-21 15:07:56
【问题描述】:

如何使用 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)

【问题讨论】:

    标签: rust serde serde-json


    【解决方案1】:

    返回两个元素元组的迭代器可以collected 到一个新的HashMapstd::env::vars 返回这样一个迭代器(称为Vars),所以它可以在这里工作:

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

    除此之外,如果不直接为Vars 实现Serialize,您将无法真正进一步简化事情。由于 Vars 是标准库类型,而 Serialize trait 来自外部 crate,因此您不能这样做。

    【讨论】:

    • 能否用一行代码删除临时变量:json!(std::env::vars().collect::&lt;HashMap&lt;String, String&gt;&gt;())
    猜你喜欢
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    相关资源
    最近更新 更多