Возьмите следующие данные TOML:
[[items]]
foo = 10
bar = 100
[[items]]
foo = 12
bar = 144
И следующий код ржавчины:
use serde_derive::Deserialize;
use toml::from_str;
use toml::value::Table;
#[derive(Deserialize)]
struct Item {
foo: String,
bar: String
}
fn main() {
let items_string: &str = "[[items]]\nfoo = 10\nbar = 100\n\n[[items]]\nfoo = 12\nbar = 144\n";
let items_table: Table = from_str(items_string).unwrap();
let items: Vec<Item> = items_table["items"].as_array().unwrap().to_vec();
// Uncomment this line to print the table
// println!("{:?}", items_table);
}
Как видите, программа не компилируется , возвращая эту ошибку:
ожидаемая структура Item
, найдено enum toml::value::Value
Я понимаю его значение, но не знаю, как я мог решить эту проблему и добиться того, что я хотел сделать в первую очередь: преобразовать дочерний массив родительской таблицы в массив структур, а НЕ в массив таблиц.