Как исправить ошибку парсинга файла TOML в Rust?

Я использую ящик toml = "0.5.8" для разбора файлов TOML. Мой ожидаемый результат должен храниться в этой структуре:

#[derive(Deserialize, Debug)]
pub struct Config {
    pub watching: Vec<Stocks>,
}

#[derive(Deserialize, Debug)]
pub struct Stocks {
    pub symbol: String,
}

Вот функция, в которой я анализирую файл TOML:

pub fn parse_toml_file(path: String) -> Config {
    let content = fs::read_to_string(path).expect("Failed to access file.");

    let toml_config: Config = toml::from_str(&content[..]).expect("Failed to parse file.");

    toml_config
}

Вот где я это называю:

let home: String = format!("{:?}", home_dir().unwrap());
let path: String = format!(
    "{}/.config/stonks.toml",
    home[1..home.len() - 1].to_string()
);
let cli = Cli::new(parse_toml_file(path));

Вот значение переменной content:

"[watching]\nsymbol = [\"AAPL\", \"TSLA\"]\n"

Вот ошибка, которую я получаю при создании переменной toml_config:

thread 'main' panicked at 'Failed to parse file.: Error { inner: ErrorInner { kind: Custom, line: Some(0), col: 0, at: Some(0), message: "invalid type: map, expected a sequence", key: ["watching"] } }', src/parse.rs:19:60
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Как исправить эту ошибку? Содержимое распечатывается, как и ожидалось.


person Henry    schedule 03.02.2021    source источник
comment
ваши структуры, кажется, подразумевают, что существует вектор акций (называемый просмотром), каждый из которых содержит символ. Однако в toml символ является фактическим вектором...   -  person Jussi Kukkonen    schedule 03.02.2021