gpt4 book ai didi

rust - 如何将顶层带有表的 TOML 文件解析为 Rust 结构?

转载 作者:行者123 更新时间:2023-12-03 11:35:55 25 4
gpt4 key购买 nike

例如:

#[macro_use]
extern crate serde_derive;
extern crate toml;

#[derive(Deserialize)]
struct Entry {
foo: String,
bar: String,
}

let toml_string = r#"
[[entry]]
foo = "a0"
bar = "b0"

[[entry]]
foo = "a1"
bar = "b1"
"#;
let config: toml::value::Table<Entry> = toml::from_str(&toml_string)?;

但是,这不起作用并抛出有关 Table 的意外类型参数的错误。

最佳答案

打印任意解析值显示你有什么样的结构:

let config: toml::Value = toml::from_str(&toml_string)?;
println!("{:?}", config)

重新格式化的输出显示您有一个带有单个键 entry 的表,它是一个包含键 foobar 的表数组:

Table({
"entry": Array([
Table({
"bar": String("b0"),
"foo": String("a0")
}),
Table({
"bar": String("b1"),
"foo": String("a1")
})
])
})

反序列化的时候,需要匹配这个结构:

#[derive(Debug, Deserialize)]
struct Outer {
entry: Vec<Entry>,
}

#[derive(Debug, Deserialize)]
struct Entry {
foo: String,
bar: String,
}
let config: Outer = toml::from_str(&toml_string)?;

关于rust - 如何将顶层带有表的 TOML 文件解析为 Rust 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59794375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com