Rust异步编程:处理send_post()函数异常
Rust 异步编程:处理 send_post() 函数异常
以下代码展示了一个使用 Rust 异步编程处理 send_post() 函数异常的示例。
async fn main() {
// let input_buf=get_user_input();
// println!("{}",input_buf);
if let Ok(res) = send_post().await {
println!("result is :{:#?}", res);
} else {
println!("hello")
}
}
// 获取用户键盘输入
fn _get_user_input() -> String {
let mut input_buf = String::new();
let _input = io::stdin().read_line(&mut input_buf).expect("fail to get user input.");
input_buf
}
async fn send_post() -> Result<serde_json::Value, reqwest::Error> {
let client = reqwest::Client::new();
// post 请求头
let mut header = HeaderMap::new();
header.insert("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/110.0.0.0 Safari/537.36".parse().expect("unsolve the userAgent header value."),
);
header.insert("referer", "https//www.covery.com".parse().expect("unsolve the referer value."));
header.insert("sec-ch-ua", "sec-ch-ua".parse().expect("ms"));
// post 请求体
let mut data = HashMap::new();
data.insert("prompt", "hello");
Ok(client.post("https://free-api.cveoy.com/v3/completions")
.headers(header)
.json(&data)
.send()
.await?
.json::<serde_json::Value>()
.await?)
}
为什么输出 else 语句内容:
如果 send_post() 函数中发生了错误,会返回一个 Err,因此在 main 函数中通过 if let Ok(res) = send_post().await 语句判断 send_post() 函数是否正常执行。如果返回的是 Ok,则打印结果;如果返回的是 Err,则执行 else 语句打印 "hello"。因此,只有当 send_post() 函数出现异常时,才会输出 else 语句。
代码解释:
- send_post() 函数: 发送 POST 请求,并返回一个 Result 类型的值。如果请求成功,则返回 Ok(serde_json::Value),否则返回 Err(reqwest::Error)。
- main() 函数: 使用 if let 语句判断 send_post() 函数执行结果。如果 send_post() 函数成功执行,则将返回值赋给 res 变量,并打印结果;如果 send_post() 函数出现异常,则执行 else 语句,打印 "hello"。
代码要点:
- 使用 Result 类型处理函数返回值,方便判断函数执行结果。
- 使用 if let 语句简洁地判断 Result 类型的值。
- 使用 await 关键字等待异步操作完成。
总结:
本示例演示了在 Rust 异步编程中如何处理 send_post() 函数的异常情况,并展示了如何使用 if let 语句判断函数执行结果,以实现对异常情况的处理。
原文地址: https://www.cveoy.top/t/topic/lBMb 著作权归作者所有。请勿转载和采集!