Rust 如何将环境变量中的配置值反序列化为Vec?

Rust 如何将环境变量中的配置值反序列化为Vec?,rust,config,serde,Rust,Config,Serde,我正在尝试使用Rust的板条箱来处理一个配置结构,其中包含一个类型为Vec的字段。我可以定义我的结构并编译所有内容,但我似乎无法使用环境变量设置值-似乎默认的环境变量反序列化将我的输入视为单个字符串而不是Vec,因此我得到错误无效类型:string“[\'a\”,\'b\”],应为序列 这里有一个最小的例子 // Cargo.toml [package] name = "min_config" version = "0.1.0" [dependenci

我正在尝试使用Rust的板条箱来处理一个配置结构,其中包含一个类型为
Vec
的字段。我可以定义我的结构并编译所有内容,但我似乎无法使用环境变量设置值-似乎默认的环境变量反序列化将我的输入视为单个字符串而不是Vec,因此我得到错误
无效类型:string“[\'a\”,\'b\”],应为序列

这里有一个最小的例子

// Cargo.toml

[package]
name = "min_config"
version = "0.1.0"

[dependencies]
config = "0.10.1"
serde = { version = "1.0.117", features = ["derive"] }

我如何才能以这样的方式传递环境变量,使
serde
能够识别它是
Vec
,而不仅仅是
字符串

配置使用JSON解析文件,而不是环境变量。不幸的是,基于,似乎没有从环境中读取数组的方法

// src/main.rs

extern crate config;
extern crate serde;

use config::{Config, ConfigError, Environment};
use serde::Deserialize;

#[derive(Debug, Deserialize)]
pub struct MyConfig {
    pub strs: Vec<String>,
}

impl MyConfig {
    pub fn from_env() -> Result<Self, ConfigError> {
        let mut s = Config::new();
        s.merge(Environment::with_prefix("CFG"))?;
        s.try_into()
    }
}

pub fn main() {
    let cfg = MyConfig::from_env().unwrap();
}