Rust 崩锈匹配

Rust 崩锈匹配,rust,reqwest,Rust,Reqwest,我是生锈新手,在Swift中缺少if let和guard let符号 我有以下代码块: fn某些函数()->选项{ 让client=reqwest::client::new(); //res通常是一种响应类型。我已将其映射到选项类型以删除错误 让res=客户机 .post(完成路径(&U) .basic_auth(self.username.clone(),Some(self.password.clone()) .send() .ok(); //如果res=None或status!==200,则

我是生锈新手,在Swift中缺少
if let
guard let
符号

我有以下代码块:

fn某些函数()->选项{
让client=reqwest::client::new();
//res通常是一种响应类型。我已将其映射到选项类型以删除错误
让res=客户机
.post(完成路径(&U)
.basic_auth(self.username.clone(),Some(self.password.clone())
.send()
.ok();
//如果res=None或status!==200,则验证状态代码并存在
让mut response=match res{
一些(res)=>匹配res.status(){
StatusCode::OK=>res,
_=>返回无
},
_=>返回无
};
//尝试读取正文内容
let token=match response.text(){
Ok(数据)=>部分(数据),
错误(_e)=>无
};
代币
}
在swift中,我会写下如下内容:

guard let response=响应,
response.status==200
让text=response.text()else{
一无所获
}
返回文本
我缺少一些速记符号吗

我试图利用从任何地方返回
return
的功能来缩短一些执行,但它仍然比我熟悉的要详细得多


编辑:

我可以使用match+子句语法来消除一些锈迹,如下所示:

let mut response=match res{
如果res.status()==StatusCode::OK=>res,则为部分(res),
_=>返回无
}
这比原来的好得多


If-let也可以工作,但是这里的If-let的问题是我正在查看失败路径。我不想在快乐的道路上安顿下来。

有人建议制定更灵活的等价物(警卫,
如果让…&&&…
),但在这种情况下,由于您通过返回
无退出,您可以利用:

fn某些函数()->选项{
让client=reqwest::client::new();
让res=客户机
.post(完成路径(&U)
.basic_auth(self.username.clone(),Some(self.password.clone())
.send()
.ok()?;
如果res.status()!=状态代码::确定{
不返回任何值;
}
response.text().ok()
}

还可以考虑返回一个
结果
?),这可能是一个更干净的API,可以让您跳过
。ok()

和…?~我不想返回结果。~我不知道?为结果和选择而工作。非常感谢。