【发布时间】:2021-04-22 15:36:48
【问题描述】:
我在data 的地址字段中得到Some(Address{...}),这是预期的。我可以从调试打印输出中看到它。
但是&data.Address = &data.Address.unwrap();
给我静态错误说:“没有字段Address on type Profile”。
let mut data:Profile = serde_json::from_str(json_string).unwrap();
&data.Address = &data.Address.unwrap();
#[derive(Deserialize, Debug, Serialize)]
#[serde(tag = "m_tag")]
pub enum Profile {
Data{
#[serde(rename="FirstName")] // to comply with Rust coding standards
first_name:String,
LastName: String,
Age: u32,
Address: Option<Address>,
PhoneNumbers: Vec<String>
},
Data2{
#[serde(rename="FirstName")] // to comply with Rust coding standards
first_name:String,
LastName: String,
Age: u32,
},
}
#[derive(Serialize, Deserialize)]
struct Address {
Street: String,
City: String,
Country: String
}
更新:
Q1) 我可以解开价值 BUt 我想更新 &data.Address 到它。
但是我又回到了原始问题,其中 &data 是 Profile 类型并且没有 Address 字段。
match &data {
Profile::Data {
first_name,
LastName,
Age,
Address,
PhoneNumbers,
} => data.Address = &Address.as_ref().unwrap(),
Profile::Data2 {
first_name,
LastName,
Age,
} => println!("ok"),
}
【问题讨论】:
-
你需要匹配
Profile::Data或Profile::Data2才能访问里面的数据。
标签: rust