gpt4 book ai didi

rust - 如何从结构验证选项参数值

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

当我尝试在更新期间对选项参数进行验证时,我正在处理rust-lang面临的问题。下面是代码的演示版本。请帮帮我。最好使用匹配模式或条件语句。

#[derive(Deserialize)]
struct UserUpdateReq {
uuid: Option<i32>,
first_name: Option<String>,
last_name: Option<String>,
}

fn update_user(req: Json) => Result<Response<Vec<i32>>, String>{

let req: UserUpdateReq = try_s!(json::from_value(req));

// Here I need to validate optional parameters
// checking both parameters have a value. In case both are None, return err message
// if any one value is present update that value.

}

最佳答案

如果要检查是否至少提供了first_namelast_name中的一种,则可以根据具体情况使用以下方法进行操作:

match (req.first_name, req.last_name) {
(Some(first_name), Some(last_name)) => {
// update both
}
(None, Some(last_name)) => {
// update last name
}
(Some(first_name), None) => {
// update first name
}
(None, None) => {
// error
}
或者
if req.first_name.is_none() && req.last_name.is_none () {
// error
} else {
if let Some(first_name) = req.first_name {
// update first name
}
if let Some(last_name) = req.last_name {
// update last name
}
}

关于rust - 如何从结构验证选项参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66616900/

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