在Rust中,你可以使用serde_toml
庫來解析復雜的TOML數據。serde_toml
是serde
和toml
庫的組合,它們分別用于序列化和反序列化數據。首先,你需要在Cargo.toml
文件中添加依賴:
[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
toml = "0.5"
接下來,你可以使用以下代碼來解析復雜的TOML數據:
use serde::Deserialize;
use toml::Value;
#[derive(Debug, Deserialize)]
struct User {
name: String,
age: u8,
address: Address,
}
#[derive(Debug, Deserialize)]
struct Address {
street: String,
city: String,
country: String,
}
fn main() {
let toml_data = r#"
[user]
name = "John Doe"
age = 30
address = {
street = "123 Main St"
city = "New York"
country = "USA"
}
"#;
let user: User = toml::from_str(toml_data).unwrap();
println!("{:#?}", user);
}
在這個例子中,我們定義了兩個結構體User
和Address
,并使用#[derive(Deserialize)]
宏來告訴serde
庫如何從TOML數據中解析這些結構體。然后,我們使用toml::from_str()
函數將TOML字符串解析為Value
類型,最后將其轉換為User
結構體。
這個例子展示了如何解析包含嵌套結構的復雜TOML數據。你可以根據需要調整結構體定義以匹配你的TOML數據。